The Maga
56698"70976'
TPUG
LIBRARY
DISKS
10 months of the latest,
fabulous public domain
software only
$70.95
J US ord(
CANADIAN
orders US$59.95
Subscribe now to start
receiving the TPUG disk of
the month
You SAVE 20% or more by using this offer as a TPUG member
THIS OFFER VALID FOR PAID UP TPUG MEMBERS ONLY
PLEASE PRINT
Name: _
Address:
Membership #
Type of Payment
□ Cheque
□ Mastercard
D Visa
□ Money Order
Signature
Amount $
Currency □ Can. □ US
Credit Card #
Expiry Date
Type of Computer
□ C64
□ VIC 20
D PET □ 4040 □ 8050
□ SUPERPET (10 disks) □ 4040 □ 8050
DC128(1541 only)
□ MS/DOS
D AMIGA (3'/i") (7 disks) D
TUB Ilagssiia
Publisher: Bruce Hampson
Editor: Nick Sullivan
Assistant Editors: Tim Grantham
Adam Herst
Production Manager: Astrtd Kumas
Editorial/Production Assistant: Iwona Sukiennik
Advertising Sales: John Matheson
Cover Illustration: Thorn K. Wu
Creative Direction (Cover): Steve MacDowall
Cover Scan and Assembly: LK Graphics
Typesetting: Noesis, Toronto
Printed in Canada by: Delta Web Graphics
Scarborough, Ontario
TPUG Magazine is published 1 times a year by
TPUG fnc. All rights to material published in TPUG
Magazine are reserved by TPUG Inc., and no
material may be reprinted without written permis-
sion except where specifically stated.
■ Correspondence: Send change of address: and
subscription enquiries to: TPUG Inc., Address
Changes, 101 Duncan Mill Road, Suite G7, Don
Mills, ON, Canada M3B 1Z3. TPUG Magazine
welcomes freelance contributions on all aspects of
Commodore computing- Contributions should be
sent on disk, though accompanying hardcopy is
welcome. Be sure to include return postage if you
wish materials returned. Please indicate on the disk
label which Commodore disk format and word pro-
cessing program you have used. Payment for art-
icles published is $30.00 per page if the author re-
tains the copyright, and $40.00 per page if the
copyright is assigned to TPUG Magazine. Payment
is made on publication. Ail contributions, are sub-
ject to editing for length and readability. Address
editorial contributions and related correspondence
to: The Editors, TPUG Magazine, 101 Duncan Mill
Road, Suite G7, Don Mills. ON, Canada M3B 1Z3.
Newsstand: 10,000
Circulation
Subscription: 12.000
ISSN #0825-0367
VIC 20, Commodore 64 and SuperPET are
trademarks of Commodore Electronics Ltd. PET is
a registered trademark of Commodore Business
Machines inc. CBM is a registered trademark of
Commodore Electronics Ltd.
Subscriptions to TPUG Magazine may be obtained
by joining the Toronto PET Users' Group (TPUG)
inc.
Regular member (attends meetings) $35.00 Cdn.
Student (full-time, attends meetings) $25.00 Cdn.
$25.00 Cdn.
$25.00 U.S.
$30.00 Cdn.
$35.00 U.S.
$45.00 U.S.
Associate (Canada)
Associate (US.)
Associate (Overseas — sea mail)
Associate (Overseas — air mail)
For further membership information, ptease contact:
TPUG Inc. Membership Information
101 Duncan Mill Road 1552 Hertel Avenue
Suite G7 Suite 144
Don Mills, ON Buffalo, NY
Canada M3B 1Z3 USA 14216
TPUG Telephone Numbers
Business Office (4l6)-445-4524
Magazine Office (4t6)-445-4524
Advertising Sales (416)-445-4524
DIRECTORY
86
TPUG Magazine #23
Feature: Computer Languages
6
A Tour Of Babel by Avygdor Moise
9
Structured Programming by Eric Giguere
10
Four Pascal Compilers for the C-64 by Dave Powell
12
What to look for in a Compiler by Dave Powell
13
Language arts by Jim Butterfieid
14
The C Language by Ajay Jindai
16
Amiga DASIC by Dick Barnes
18
Amiga DASIC sound and screen by Chris Johnson
20
Northcastle Structured DASIC by Chris Johnson
22
COMAL: The Disk, The Cartridge by Len Lindsay
Articles
24
Amiga Dispatches by Tim Grantham
26
ESCape G 2 by Adam Herst
28
A Layman's Guide to Durst Mode: Part 1
by Miklos Garamszeghy
32
A Super-OS/9 Dug Report by Avygdor Moise
Reviews
40
MTDASIC by Adam Herst
41
PROMAL by Nick Sullivan
42
Super Graphix Jr. Interface by Ranjan Bose
43
Elite by Thomas Jones
44
Power Plan by Dave Powell
44
PR- 1011 Printer by Ranjan Bose
Departments
2
Inside Information
4
Line Noise
23
TPUG Library Programming Contest
27
BD5 Password for May and June
27
Marketplace
31
Calendar of TPUG Events
36
Additions to the TPUG Software Library
39
TPUG Software Order Form
45
Products Received by Astrld Kumas
45
A VIC 20 Correction
47
Bulletin Board
47
Unclassifieds
48
TPUG Magazine Distributors
48
TPUG Contacts
48
Index of Advertisers
Inside Information
TBUGs
In last months issue, M. Garamszeghy's
program MFM Formater contained an
error due to the renumbering of lines dur-
ing the typesetting. Line 30 should read
38 Inpufaelect a format";
f :restore(f*10+90) :
read b6,bs,9d,f$
We apologize for any inconvenience and
promise to watch out for those calculated
restore statements from now on.
First offerings
In 1985 Commodore released it's long
awaited successor to the very popular
C-64, the C-128. More than just a 'fat 64',
the C-128 offers a number of enhance-
ments and options never before seen on
the 'low end' Commodore computers. As
in the past, TPUG intends to offer full
user support in the form of monthly
chapter meetings and public domain
libraries. In the past, chapter libraries
have started from scratch and have been
built on the contributions of our
members. However, with the implemen-
tation of the CP/M operating system on
the C-128, a wide variety of existing
public domain programs became avail-
able. Through the generosity of Lorne
Gould and John Matheson of First Byte
Software, a large library of these pro-
grams have been made available to TPUG
members. Formerly a Toronto area
distributor of CP/M public domain pro-
grams, First Byte currently manufac-
tures and distributes the SMAN Money
Manager for CP/M and MS-DOS
operating systems. Lorne and his staff
have generously allowed us to begin
translating into Commodore disk format
the megabytes of software housed at
their Richmond St. offices and have given
invaluable advice on configuring these
programs for the C-128. These contribu-
tions will help establish the TPUG CP/M
library as a major source of C-128 CP/M
programs. As C-128 co-ordinator and
CP/M librarian I would like to take this
opportunity to thank Lorne and all his
staff for their help, patience and profes-
sional considerations.
This month
This month we focus on the increasing
number of alternative languages for Com-
2 Issue 23
modore computers. After years of mak-
ing do with the relatively sparse BASIC
built into Commodore computers, better
BASICs have started making their ap-
pearance, as noted in articles on Amiga
BASIC by Chris Johnson and 128-based
BASICs by Adam Herst. A better BASIC
for the C-64, PETs and VIC 20 is avail-
able in the form of Northcastle BASIC,
a public domain BASIC. Yet another
popular public domain language for the
C-64 is COMAL, who's advantages are
duly noted in an article by Len Lindsay.
Newer, less familiar languages such as
Pascal, Promal and C are explored in art-
icles by Dave Powell, Nick Sullivan and
Ajay Jindal respectively. Overviews of
programming in these various languages
are provided by Avy Moise and Eric
Giguere.
Next month we look at orphaned com-
puters, those unfortunate machines no
longer considered the cream of the crop.
Support and information for these
machines has become increasingly hard
to find even though they may have years
of productive use left in them. Our
coverage will include such gone but not
forgotten machines as the VIC 20, C-16,
Plus/4, B-128 and the PET series of
computers.
Dept. of Labour report
Last issue we revealed to an astounded
world that two members of the
magazine's editorial staff were expectant
fathers. This is now a half-truth. After an
extended development effort of nearly a
year, Alexander Patrick Grantham was
released to the public domain at 2:38 in
the morning of April 14. The new unit
comes equipped with a real-time clock
that generates non-maskable interrupts
at three-hour intervals, completely in-
teractive i/o facilities, one-channel sound
generation capability {upgradable to in-
clude speech synthesis real soon now),
quite a few internal drives and an in-
telligent, fully multitasking operating
system. Oh yes, and $0014 fingers and
toes too. Congratulations to Tim and
Cate. D
COMAL REFERENCE GUIDE
Sixty-four pages outlining ail the C64 COMAL
keywords, with sections on the language's superb
String Handling, Procedures and Parameters,
Expressions and Standard Functions. $9.95
COMAL
Reference Guide
■ £
i by Dorge R. Christensen
With □ fotewud by Jim Gutteiftek)
Send cheque or money order to:
TPUG Inc., Dept. 4, 101 Duncan Mill Rd., Ste. G7 Don Mills, Ontario,
Canada M3B 1Z3
THIS MONTH'S SPECIALS
,19B6\ \rr3^ r^^
Acct*
5529 Yonge Street, Willowdate, Ontario M2N 5S3
Tel: (416) 229-2700
Note: All price* In Canadian Funds. Phone and mall order* welcome.
Ontario reildents add 7H sale* tax.
Add 5«* lor shipping (minimum charge $4.00)
10** discount lor TPUG members on regular
priced software, accessories and magazines.
TPUG Magazine invites you to ex-
press your views on Commodore
computing by writing to:
Line Noise
TPUG Magazine
101 Duncan Mill Road, Suite G7
Don Mills, Ontario MSB 1ZS
Canada
SID quirks
I have read your article in the November
'85 issue of TPUG Magazine dealing with
the SID chip. In your column 'SID'S
Curious Quirks. . .', I was interested in
the fact that you can route an external
audio signal through the filters, controll-
ing the loudness with the volume nybble.
I would consider myself an amateur pro-
grammer in that I have mastered BASIC
programming and can readily adapt to
most of the special features offered by the
Commodore 64, such as music and sound
synthesis. I had already decided that ac-
cess to the SID was not worth the effort
in BASIC, so I have invested quite a bit
of money in commercial software that
specializes in music composition and SID
access through the use of other, more
convenient, languages. The idea of
routing an external signal through the
SID seems worth exploring, and 1 am re-
questing some further literature in how
to do this.
Dean Niquette
Kaukauna, WI 54130
As far as / know, there is no literature.
The information in the article came from
personal experimentation and careful
reading of the SID chip specifications con-
tained in the Programmer's Reference
Guide. There is nothing I can add to that
article except to tell you that I used a
Casio VL-Tone mini-keyboard as the
audio input. Connecting it as described
in the article, I was able to mix its signal
into the output of the SID chip. It's just
like adding another voice to the SID chip:
its loudness is controlled by the master
volume nybble at $DJ+18 (decimal 51/296);
and if you set bit 3 of register $D417, you
can control its tone with the filters. Check
to see if your music software can use this
feature.
The external input capability was
originally intended as a way to chain the
output from several SID chips contained
in a piano-style keyboard. It's of limited
utility, in my opinion, but it's fun to ex-
periment with. Just be careful to observe
the input voltage and impedance specs,
and whatever you do, don't connect the
audio output of the SID to the audio in-
put, or you '11 probably have one deep-fried
chip in your C-6H
Tim Grantham
WP64 vile zap
The following is a copy of a letter sent to
Pro-Line Software in Mississauga, On-
tario. We publish it for the information
of other users who have very early copies
of Pro-Line's WP64 word processor.
Boy am I mad at you guys!
I use my Commodore 64 in my consulting
practice. The biggest use 1 put the
machine to is word processing. At
present, I am using version V. 841115 of
WordPro 64 (or, as the program is
sometimes known, WP64, or The Word-
processor). The manual is the 2nd prin-
ting (September 1984 version). I also use
Spellpro64 (version number unknown,
purchased December, 1984). I own a Juki
6100 printer, a Star SG-10 printer, a
Cardco Card? + G printer interface, a
BusCard II IEEE and printer interface
connected with an MSD SD-2 drive as
device number 8, and a 1541 as device
number 9.
Today I attempted to load WP64 from
drive 1 of device 8, with my text disk in
drive of device 8. WP64 did not load.
Then it reset the machine and reformat-
ted my data disk in drive with the label
'PIRATE COPY'.
Of course, I keep backups of my data
disks. Unfortunately, my backup was two
days old, so I am out two days of work
(or $600.00) getting back to where I was
before I made my simple mistake. I
reviewed the manual, and it does say the
following:
Place the WORDPROCESSOR
program disk into drive of device
8 and close the drive door. NOTE:
You must use that specific disk
drive. The WORDPROCESSOR
can not be booted from any drive
other than drive 0, device 8.
However, there is no warning that if you
try to boot the program from any other
drive it will reformat the disk in drive
of device 8.
I think the practice of reformatting
suspected pirate copies of your disk
without ample warning is poor software
design, and if my backup had been much
older, I would consider legal action
against your company.
CM. Smythe
London, Ontario
According to Stew Martin of Pro-Line, the
particularly vicious form of copy protec-
tion, you describe was present in the
earliest copies of WPG4, a fact that
somehow escaped Pro-Line's notice. Ap-
parently, the programmer who added the
protection had a perverse sense of
humour. Pro-Line corrected the fault as
soon as it was brought to their notice, and
will replace the earlier ones on request.
First impressions
Commodore's new machines are very
nice, though one does encounter the odd
quirk. For instance, the CAPS LOCK key
works on all the alphabetical keys except
the Q key. This is not too annoying,
however.
The MSD SD-2 dual disk drive seems
to work fine with the C-128in any mode.
The Batteries Included 80-column card
does not work in C-128 mode, but at least
it doesn't force the C-128 into C-64 mode
upon initialization.
Commodore's 'new' MPS- 1000 printer
for the C-128 is actually the Epson Spec-
trum LX8064 printer with Commodore
labels on it. This is a compact, fairly fast
(about 100 cps) printer that apparently
will do both hi -res bit -mapped graphics
and good correspondence quality print
(better than on the 1526/MPS802). The
Spectrum LX-8064 has a 16 cps that
comes very close to letter quality. It is
slow but the quality is incredible!
The 1571 seems to be a pretty amaz-
ing and extremely versatile disk drive. Ac-
cording to Jim Butterfield, there will not
be a dual drive version of the 1571. That's
extremely depressing, for dual drives are
far more useful than single drives, and
can easily justify their added cost.
Sean Rooney
Port Credit, Ontario □
4 Issue 23
ATTENTION
ALL COMMODORE 64,
VIC 20, COMM. 16 AND
COMMODORE 128 owners
A complete self-tutoring BASIC programming course
is now available. This course starts with turning
your computer on. to programming just about
anything you want! This course is currently used
in both High School and Adult Evening Education
classes and has also formed the basis of leacher
literacy programs. Written by a teacher, who after
having taught the course several times, has put
together one of the finest programming courses
available today. This complete 1 3 lesson course
of over 220 pages is now available for the COM-
MODORE 64, VIC 20, COMMODORE 16 and the
COMMODORE 128and takes you step by step thru
a discovery approach to programming and you
can do it all in your leisure lime! The lessons are fil-
led with examples and easy to understand explanat-
ions as well as many programs for you to make up.
At the end of each lesson is a test of the information
presented. Furthermore, ALL answers are supplied
to all the questions and programs, including the
answers to the tests. Follow this course step by
step, lesson by lesson, and turn yourself into a
real programmer! You won't be disappointed!
We will send this COMPLETE course to you at
once for just $19.95 plus $3.00 for shipping and
handling (U.S. residents, please pay in U.S. funds).
If you are not COMPLETELY satisfied, then simply
return the course within 10 days of receipt for a
FULL refund.
Now available! a 200 page course
exclusively on sequential and rel-
ative files using a unique approach
for those with very limited file programming ex-
perience - set up your own personal and business
records! — disk drive a must — same author —
same guarantee — same cost — this course for
all computers except Vic 20.
Fill in the coupon or send a facsimile.
| NAME:
TP
ADDRESS:
I CITY
I PROV./STATE:
I POSTAL/ZIP CODE:
| I desire the BASIC program-
[ ming course for:
Commodore 64 Vic 20
| Comm. 128 Z Comm. 16 D
| I desire the FOLLOW-UP D
I course on relative and seq-
uential files for all above
computers but Vic 20).
Any complete course: £19.95 1
Postage and Handling: 83,00 1
Total: $22.95 [
Send Cheque or Money Order to |
Brantford Educational Services 1
6 Pioneer Place.
Brantlord, Ontario.
Canada N3R 7G7
BUSINESS
SOFTWARE
DIRECT FROM THE AUTHORS WITH A 30 DAY SATISFACTION
GUARANTEE PLUS CONTINUING SOFTWARE SUPPORT
PROVINCIAL PAYROLL
FAST. USER FRIENDLY WITH HELP KEYS. SOUND
CUES AND AN EXTENSIVE MANUAL ■ USE WITH C-64 OR
C-128 AND COMPATIBLE DISK DRIVE AND PRINTER
. PAY JOURNALS • PAY RECORDS • T4 SLIPS
. CHEQUE WRITER . 99 EMPLOYEES
Qty. x S79.95 S.
Shipping & Handling S .
7% Sales Tax
|Ont. residents only] $_
TOTAL S .
5.00
DEALER INQUIRIES WELCOME
Name
Prepaid Orders only
Address
City
Prov.
Code
I ^2^3 I
JOHN DUNLOP& ASSOCIATES LTD. I
R.R. #5 ORANGEVILLE, ONTARIO L9W 2Z2 (519) 941-9572
□ CHARGE MY VISA OR MASTERCARD NUMBER
M M I I I I I I I M I I I I
EXPIRATION
DATE
Expand
Past
Maximum
Capacity!
The TecrVNews Journal Fa Comrnocbre Computers
At better book stores everywhere! Or 6 issues delivered to your door
for just $15.00 (Overseas $21 U.S. Air Mail $40 U.S.)
The Transactor. 500 Steeles Ave. Milton. Ontario. L9T 3P7.
416 878-8438
Also check out The Transactor Disk and The Complete Commodore
Inner Space Anthology - to us, expansion knows no limits!
A Tour of Babel
by Avygdor Moise
Copyright ° 1986 Avygdor Moise
I still remember standing in line with a
deck of IBM cards, waiting to submit a
'job 1 to the main frame computer. My jobs
would normally take less than one second
to execute, and at the time I did not mind
waiting for up to 30 minutes for my turn
to submit the cards to the card reader,
then wait up to an hour before the print-
out was available. Normally, my pro-
grams would not execute correctly (if at
all) on the first try, so I had to spend days
debugging the programs before I could
benefit from the results that were
generated during a few milliseconds of
computer time.
In that dark age of computing, I was
never concerned about improving the
program's efficiency by choosing the
right programming language, or by using
various programming techniques to speed
up the execution of my programs. Effi-
ciency and style was not an issue, since
I did not have a wide choice of program-
ming languages and the elapsed time be-
tween jobs far exceeded the CPU time of
any given run. During the busy season,
I had to wait up to a week before I could
collect the printed results of a ten minute
job.
Those of you who think that I must be
ancient, since I was brought up on punch
cards and paper tape, should note that the
events described in the preceding para-
graphs took place less than ten years ago,
during the period of 1976-1979.
In the late 1970's, programmable
calculators and micro computers became
available to the general public and the
concept of a personal computer was born.
With the reduction in the computer's size,
there was also a decrease in memory size ,
the availability of peripheral devices, and
software. In addition, the computer
manufacturers and software developers
had to adjust to the fact that the average
computer user was no longer a computer
expert or a system programmer, but an
inexperienced person with little or no
previous exposure to computers.
The popularity of the micro computer
can be partially attributed to Com-
modore. Commodore was among the first
to produce a low-cost, user -friendly micro
computer - the PET 2001. One of the
most important features included with
the early home computers was the
development of an interactive operating
environment/language called BASIC.
Without BASIC, I believe that personal
computers could not have gained any
ground in our homes and in schools. This
is because BASIC provided a simple way
to command and control the computer
and its resources.
As micro computers become more
powerful and approach the capabilities of
some of the so-called main frames of the
1970's, the number of programming
languages available for the micro com-
puter is also increasing. This presents a
problem for the modern computer pro-
grammer, who must choose from a wide
selection of available languages . The right
choice can make program development
and maintenance a pleasurable ex-
perience. The wrong choice, however,
may turn the simplest project into a
nightmare (and I've had a few).
What is a
programming language?
A programming language is a set of syn-
tactical rules that are applied towards the
construction of instructions to command
the computer to perform a given task. A
program is a collection of such instruc-
tions (statements), put together to per-
form a given application.
10 let x = 3
20 print x
30 end
This program consists of three
statements (line 10 through 30) which
prints the number 3 on the screen. Each
of the statements was constructed
according to the syntax rules that are re-
quired by the BASIC language
interpreter.
When you type the command run, this
program will execute, i.e. it will be
translated to something like:
MOVE.L #3,X(A6) ;store the value 3 into
variable X
MOVE.L X<A6),D0 ;convert the integer in
X to an ASCII string
TRAP DC.W MSITOS TRAP display
the ASCII string
DC.W l$PUTS TRAP terminate the
program
DC.W F$EXIT
Are you confused? You should be!
The program segment listed above
represents the code that may be produced
by a BASIC translator (compiler) to
reduce the syntax of BASIC to the com-
puter's native code. The translation of a
high level syntax (like BASIC) to machine
executable code is done invisibly by the
computer, right after you type the run
command. Hence the term 'BASIC
interpreter'.
Sooner or later you will find out that
programs that are executed by an inter-
preter run relatively slowly. This is main-
ly due to the fact that the interpreter
repeatedly converts the English com-
mands that make up your program into
machine code. The overhead that is
generated by the dynamic translation of
the program is large enough to slow down
the execution speed of any program.
To speed things up, one may choose to
write the programs in machine language.
However, if this article was written in
machine language, it would look like:
01001001
00101010
00100010.
00100100
01001111
10100101
11101001
Not a pretty sight. Considering that in-
terpreters are slow and binary code is too
hard to master, we use compilers as an
alternative. High level languages, there-
fore, provide a tool for writing program
code in a readable, easy to understand
form, which is then translated by a com-
piler to pure binary code executable by
the microprocessor. If the compiler is a
good one, and the computer language is
properly chosen, the object code produced
by the translator will be, at times, as ef-
ficient as the corresponding code that had
been hand-written at assembly level .
Hence, in acquiring a programming
language for your micro computer you
should
• Choose the right language (this may be
application dependent);
• Choose the compiler that produces the
Continued overleaf. . .
6 Issue 23
Statement description
C
Pascal
Fortran
Data types
Siaple variables
intecier
character
float
int a;
char bf
float t;
var ajinteger;
var b i char;
var q treat;
integer a
character*! b
real*4 c
Pointers
integer
character
float
integer function
int *a:
char *bj
float *c;
int (ffM)j
var aslnteger;
var bt^char;
var b! A reali
N.A.
N.A.
N.A.
N.A.
external f
Arrays
integer
int aC10][20]
var a:array[0..9,0..29] of integer;
var b:array[||.,993 of char;
integer a(10,20)
character
char bUSBl
character^ b(180)
Structures
record containing i
typedef struct x
x - record
N.A
of type integer and
c of type character
C
i: integer;
int i;
c j char
char c;
end
J x;
User extensions
structures
x yC2];
var y:array[B..n of x;
N.A.
■tcroi
fdefine INTEGER int
N.A.
N.A.
♦define f(x) g(x)
N.A.
N.A.
conditionals
lifdef A
I
lendif
N.A.
N.A.
tifndef A
Y
tendif
N.A.
N.A.
include files
tindude <stdio,h>
N.A,
include tore. for
Operators (arithnetic)
assi anient
addition
a=3;
a;=3s
a=3
b+=3;
c=5-b;
tn=b+3;
b=b+3
subtraction
c:=5-bj
c=5-b
Operators (logical)
a.eq.3
test for equality
a==3
a=3
test for not equal
b!=5
DOS
b.ne.S
test for greater
c>b
c>b
c.gt.b
Operators (boolean)
boolean and
Mi
a and d
a.and.d
boolean or
biic
b or c
b.or.c
boolean not
!c
not c
.not.c
Operators (bitwise)
bitwise and
at3
N.A.
syntax is the
sane as boolean
but data type
■ust be integer
bitwise or
b!5
N.A.
bitwise not
*c
N.A.
Conditionals
if stateient
if(T)
if(T) then
if CT) then
51;
SI
SI
else
else
el se
S2 S
32
S2
end if
(expr?a:b)
N.A.
N.A.
Grouping
stateients
{Sl;S2;S3...Sn>
begin
Sl;S2;S3...Sn
N.A.
end
loops
while(T) S;
while(T) then S
do while(T)
S
enddo
for(i=!}i<n,i++) S;
for i:=l to N do
do i=l,ia
S
S
enddo
TPUG Magazine 7
most efficient object code for your
computer.
In this article, I will concentrate on choos-
ing the right dialect, since the choice of
a compiler for a specific language and
computer strongly depend on software
availability.
Choosing the right language
Simply put, a good language should pro-
vide statement syntax rules that can be
efficiently used in program construction
and readily converted to machine code.
Optimally, a high level language should
support the following features and
capabilities:
• Sequential execution of instructions
and statements;
• Non-sequential execution of instruc-
tions and statements (branching);
• Conditional execution of sequential in-
structions and statements;
• Concurrent execution of instructions
(multitasking);
• Grouping of statements (blocks and
procedures);
• Flexible data typing (attributes that a
variable may have);
• Memory manipulation of data and pro-
gram object code;
• Input and output capabilities;
• Clarity, self consistency and reliability;
• Portability;
• Extensibility (user defined syntax).
Let's expand on some of the points in the
above list. I will to use examples where
possible to illustrate a certain feature.
In the examples that follow, I chose to
compare three computer languages (C,
Pascal and Fortran) that are known to
run on most Commodore computers.
Note: The table does not cover all the
features and capabilities of the languages.
Only a few features were selected for the
purpose of illustration. For a better
understanding of the languages, please
consult a user reference manual.
On the surface it seems that the three
languages hardly differ from each other.
This is true if your application requires
only a subset of the language to solve the
problem at hand. This is one of the
reasons for the acceptance of BASIC as
the major programming language by
most users.
As seen in the table above, all three
languages fully support sequential, bran-
ching, and conditional statements, and
grouping. Only C, however, supports con-
ditional execution of sub-expressions
within one statement. For example,
a = (b>c?b:c) + 5;
will assign 5 plus the larger of b or e to a.
Also, C provides a larger selection of
operators. This may be viewed as a useful
feature that allows the programmer to
use the optimal combination of operators
for the application at hand. On the other
hand, this may prove quite confusing to
the beginner and may lead to the genera-
tion of inefficient code if the wrong con-
struction is chosen.
For example, to increment a variable
by one unit, any one of the following
statements may be used:
a+ +;
+ +a;
a+=l;
a = a + l; . . .
To reference the first array element we
may write
a = *b;
a = b[0]; ...
Which one is the bestf
If the languages are similar in most
aspects, where do they differ? The main
differences will be found in the way they
treat the computer's memory. The type
of data that can be stored and accessed
by a program strongly depends on the
data types that are supported by the com-
piler and the addressing modes that are
allowed. It is obvious that Fortran can-
not use or manipulate pointers to data
structures, whereas C and Pascal can. On
the other hand, Fortran can pass pointers
to data and functions, whereas Pascal can
pass pointers to data only. Therefore, if
your application does not rely on pointer
manipulation, any language will do.
In conclusion, it is not easy to choose
the best language for your computer. This
is mainly due to the fact that the best
language for one application may be the
worst for another. As a result, you may
have to master a few languages to make
your computer truly efficient. However,
this also means that you may choose any
language initially, for the purpose of
learning, since once you have mastered
one language, it is easy to master
another . When deciding on the purchase
of a computer language, your best bet will
be to get the one that is commonly used
on your type of computer, since this im-
plies that it is likely to be relatively free
of bugs. □
Missing Letter Puzzle
1) Insert your COMAL disk in drive*.
2) Type LOAD "C64 COMAL*",8
3) Type RUN (starts COMAL)
4) Type AUTO (turn on auto line#'»)
5) Enter the program lines shown below
(COMAL indents lines for you)
6) Hit RETURN key twice when done
7) Type RUN
Pr-gr-mm-r'fl P- r -d-a- P-ck-g-
Programmer's Par?
0010 dim text* of 39, disk* of 2
0020 open file 2,"mis8ing.dat" l read
0030 diek$:=status$; count:=0
0040 if disk$="00" then
0050 count'text
0060 else
0070 close // no data file found
0080 create'text
0090 endif
0100 play'game
0110 //
0120 proc count'text
0130 while not eof(2) do
0140 read Tile 2: text*
0150 count:+l
0160 endwhile
0170 close
0180 endproc count'text
0190 //
0200 proc create'text
0210 open file 2,"missing.dat", write
0220 print "input text (or blank):"
0230 repeat
0240 input text!
0250 if text J>"" then
0260 write file 2: textj
0270 count:+l
0280 endif
0290 until textt=""
0300 close
0310 endproc create'text
0320 //
0330 proc play'game
0340 open file 2,"miBsing.dat",read
0350 for x:=l to rnd(l,count) do
0360 read file 2: text!
0370 endfor x
0380 close
0390 for letter:=l to len(textj) do
0400 if text$(letter) in "aeiou" then
0410 print"-",
0420 else
0430 print text$(letter),
0440 endif
0450 endfor letter
0460 print
0470 for letter:=l to len(textt) do
0480 while key$Otext$(letter) do
0490 print "?"+chrJ(157), //left
0500 endwhile
0510 print text$(letter),
0520 endfor letter
0530 endproc play'game
* If you don't have COMAL yet, order a
Programmer's Paradise Package -tl9.95,
It includes the complete COMAL system
plus over 400 pages of information. Add
$5 more to get our 20 interactive lesson
Tutorial Disk. Add $2 shipping. Visa/MC
or US funds check accepted. Send to:
COMAL Users Group USA
6041 Monona Drive, Room 109
Madison, WI 53716
phone 608-222-4432
8 Issue 23
Structured Pro^amming
by Eric Giguere
Copyright © 1986 Eric Giguere
Structured programming has become the
latest rage in programming methodology,
even though it's been around for a long
time. It's really the way a person should
be taught to program in the first place,
but the preponderance of non -structured
languages in the marketplace (the most
obvious example being BASIC) has made
a structured approach awkward and
limiting. I know that if you had told me
a couple of years ago that I'd become a
believer in structured programming, I
probably would have laughed. Well, folks,
I've learned.
What is it?
Ask three different people what struc-
tured programming is, and you'll prob-
ably get three different answers. Still,
there are some basics that everyone can
agree upon, and thus my definition of
structured programming goes as follows:
Structured programming is a pro-
gramming methodology in which
programs are written in a hierar-
chical form with step-wise refine-
ment and an evident program
structure.
For those who consider this to be a bit
wordy, what it all boils down to is this:
structured programming requires good
planning and makes plentiful use of pro-
gram modules. Step-wise refinement
refers to the fact that, as you program,
each part of your program is refined from
the general to the specific. That is, you
go from a general structure to a very
detailed one, working on each step
separately until the desired effect has
been achieved and the bugs worked out.
In general, the concept of structured
programming implies three things:
• The problem has been properly defined.
• No actual programming is done until a
plan of action has been thought out.
• The program is written so that it flows
logically from one module to the next.
This last comment refers to the fact that
a good structured program will have no
need for gotos or the like (exceptions
arise when you try to simulate certain
programming structures in a non-
structured language). While this may
seem to go against the grain of program-
ming in BASIC, it can be done quite
efficiently .
The Power of Planning
Perhaps the most important advantage
of structured programming is that it re-
quires a lot of planning. Two years ago
I probably would have attacked a pro-
gramming project by sitting down at the
computer and programming off the top
of my head. This method works — and is
still useful for me when I need to write
a small, quick and dirty program for tem-
porary use — but has its disadvantages.
You may end up spending more time in
finding and correcting errors than in
entering the original source code; and
goodness knows how much fun you would
have trying to modify the program.
In contrast, structured programming
requires you to define the problem, create
a general algorithm for solving it, and
refine each step in the algorithm. You
can, of course, go into great detail while
planning a program, reducing the job at
the end to merely typing in the code and
testing it, or you may leave it in a more
generalized form and create the code at
the keyboard, according to the plan you
have conceived. There are no hard and
fast rules for structured programming —
individual preferences and style play a
large part in determining what you do.
While this planning may seem a bit
tedious to some, there are definite advan-
tages that, in my opinion, outweigh the
disadvantages. First and foremost is the
fact that you have defined the problem.
While this may seem obvious, many pro-
grammers start with only a vague idea
of what they would like the program to
do. Knowing exactly what it is you want
to do allows you to be more precise in
your coding and to discover hidden pit-
falls in the task you are attempting.
The second advantage lies in the fact
that a structured and well -planned pro-
gram is much, much easier to modify and
extend. The program's structure should
be obvious and the variables well-
documented so that you know precisely
what a section does and what you must
do to properly change it. Of course, cer-
tain languages make this much easier to
do, as we shall see below. Third, program
bugs are easier to locate and correct.
Finally, the program's structure makes
it easier to read and understand by
others, especially if the code is well-
commented. For these reasons, the time
spent in properly planning a program is
time well spent.
Languages
While structured programming practices
should be implementable in almost any
language, some languages are more con-
ducive to it than others. Pascal, for ex-
ample, is probably the most-cited example
of a structured programming language.
Programming in Pascal requires a struc-
tured approach, with much emphasis on
well-conceived program modules. C is
another such language (my current
favourite). C is more flexible than Pascal,
but also requires a structured approach
to programming. Other languages, such
as FORTRAN or BASIC, are decidely un-
friendly to structured programmers, and
properly implementing your plans can be
a real pain. Since learning C, I've often
wished that BASIC had while loops
(structures that repeat themselves until
a certain condition is met) or case
statements (for making multiple choices),
and sometimes I mistakenly program us-
ing them. Even an if ... then ... else
statement would be nice! It's hard to go
back to the old ways once you've started
seriously using structured programming
methods.
If you would like try your hand at struc-
tured programming, you can do so by
purchasing one of the several C or
PASCAL compilers available for Com-
modore computers. A good introductory
book on the language is also recommend-
ed. If you prefer not to invest much
money in a structured language, another
alternative presents itself: COMAL.
COMAL is a hybrid language that has
elements of both BASIC and Pascal, mak-
ing it easy for BASIC programmers to
learn while giving them powerful struc-
tures to work with. Its best feature is its
price, nothing! You can get COMAL 0.14
(the public domain, disk -based version)
from TPUG or from The COMAL Users'
Group and other sources. Tutorial and
reference books are also available, as well
as an extended cartridge version of COM-
AL (this one isn't free). This is perhaps
the best and easiest way I know of to gain
exposure to structured programming. If
you're interested, I'd suggest you try it.
D
TPUG Magazine 9
Four Pascal Compilers for the C-64
by Dave Powell
Oxford Pascal
Oxford Computer Systems, Oxford,
England. Distributed in North America
by Limbic Systems, Inc.
I reviewed this package in the January
1985 issue of TPUG Magazine, so just the
highlights here. It turns out that Oxford
has a pretty good product. The major ad-
vantage, specially for new Pascal users,
is that it has an in memory mode (the
editor, compiler, source and object are all
in memory) for quick compiles of small
programs. Although some features are
missing in this mode, it is great for ex-
perimenting — to get the syntax right,
for instance. Without disk access re-
quirements, compilation is very fast.
The major flaw in the product is the
fact that the compiled code is slow. I
believe that p-code, rather than machine
code, is produced. This also means that
even a small program is saved as over 50
blocks if it's wanted in a form that will
run from BASIC.
The program development environ-
ment is good because of the no-disk com-
pile. All the errors can be found in one
compile. Machine code can be incor-
porated, although there is no built-in
assembler. Documentation of internals is
sketchy.
This is a full implementation of the
language, with a good set of extensions.
Strings have only basic support. Much of
the built-in C-64 operating system is us-
ed, so often a familiar poke will still work.
Other program code can be included:
there is a source include, program chain-
ing, and linking of separately compiled
programs. All in all, this package is still
a good choice, unless you're after
machine language speed.
Zoom Pascal 64
King Microware, Quebec.
This compiler has the advantage of being
inexpensive: full price was around 50
dollars (Cdn.) and I found a clearance
copy at 10 dollars! Its big fault is that it
is a disk-based compiler, and stops at the
first compile error. This makes program
development very tedious. Because of
this, the amount of experimenting that I
did was limited, and much of the follow-
ing is based on the documentation, rather
than experience.
An editor is supplied, which adds some
functions over the built-in C-64 screen
editor. Beware of losing files using this
editor. The original file is opened for up-
date, and the result of your edit replaces
the original upon exit. Tough, if you've
deleted all lines, as I did. It is apparently
possible to define editor macros, but the
manual stops short of a full explanation.
The compile is a two-step compilation to
p-code, which is then translated to
machine language.
Implementation is a subset of standard
Pascal, with extensions. String handling
functions are more extensive than any of
the other compilers I've tried.
I'm not sure how well C-64 features can
be accessed. A mem array is equivalent
to peek and poke, so sound and colour
should be available. Object code is ML,
and a stand-alone program stores in
30-plus blocks. File access appears to be
normal, and a sample program on the
disk gives an example of relative file pro-
gramming. A call procedure is provided,
apparently for using external ML
routines, but is not explained. No other
form of program include is available. This
is a cheap, but potentially frustrating, in-
troduction to Pascal.
PASCAL 64
Abacus Software, Inc., Grand Rapids,
Michigan.
Judging solely by the recent price reduc-
tion, I would say that this Pascal is be-
ing replaced by Super Pascal in the
Abacus line. In a recent catalogue, the
price is $12.95 (US) 'while quantities last'!
This compiler has one of the better
64-specific sets of extensions, creates ML
object code, and has good string func-
tions. On the minus side, the development
environment is very inhibiting. The com-
piler stops at the first error, issues a cryp-
tic compile error in xxxx message to the
screen, and then jumps to the cold start
routine a few seconds later! This means
that if one is not watching intently, not
only is there no result to run, but the com-
piler has to be reloaded and rerun just to
establish the line in error.
Because of this, and the fact that Super
Pascal was introduced, I didn't dig too
much deeper into this product. Incident-
ally, the 'cold start' route is undoubtedly
an anti-piracy measure. Since Pascal 64
uses the built-in screen editor, rather than
its own, the designers had to expunge
their code from memory before handing
back control! Another example of how
piracy hurts everyone,
I like the idea of using a familiar editor
(it also means that Power 64 and similar
aids are usable), but it has its restrictions.
The character strings rem and data must
never appear anywhere in a program,
even embedded in other text. Also, inden-
ting presents problems: a semicolon must
be used in the first column, before spaces
are accepted.
The compile is followed by a loader
routine and a save. The loader has to be
started with run 100 — not friendly. Ex-
ternal source code can be included by run-
ning a linker program.
Pascal-64 has nearly cdl of the features
of standard Pascal. It also has procedures
to plot and unplot graphic points, to
create sprites, and to create and run an
interrupt -driven procedure so that two
routines will run coincidentally.
The compilers for Zoom Pascal and for
Pascal 64 have a common heritage: one
is licensed from the other. However, they
are no longer identical. Pascal 64 now
sports more functions, while Zoom has
more development features. However, I
cannot recommend any compiler that
needs to be reloaded to find each in-
dividual error, as both of these do.
Super Pascal
Abacus Software, Inc., Grand Rapids,
Michigan.
This is a developer's compiler. The ma-
jor feature is the integration of machine
language code within a Pascal program.
Individual functions or procedures can be
coded in ML. I have two large complaints,
though. First, the only way to compile is
to copy the source to the product disk; the
object has to be copied off it later. This
is an invitation to disaster, as there is no
backup disk. Secondly, in creating a
development environment, even the DOS
has been changed. That's fine for stand-
alone programs, but try transporting
data to and from a spreadsheet!
According to the manual, two 1541s
can be used. The compile procedure asks
which drive to use, but fails if the source
is not on '0' (unit 8). Not even the copy-
10 Issue 23
ing utilities work properly with two
drives. A letter to Abacus produced this
response: The program will only compile
using one disk drive. The two drives are
used only for copying the programs in the
utility section. When I tried copying, one
file copied, and the next failed. Compiles
with two drives fail in different places
each time. I think they have a timing
problem in their custom DOS. Not being
able to use two drives is an inconve-
nience, but worse is having to compile
from the product disk. I never like
writing anything to a protected disk.
After using this one for a while, there
have been occasions when a message
floats across my screen saying that I
shouldn't use a copy. Apart from being
libellous, this is quite worrying.
Otherwise, the development environ-
ment is good. The compile identifies all
the errors, and it's fast. Smaller pro-
grams can be compiled to memory, which
is even faster. However, the compiler still
has to be loaded from disk. The supplied
editor has a move command and auto-
indenting: each new line begins under the
start of the previous one. The source code
of the editor is supplied — it's in Super
Pascal — so anything you don't like you
can fix. This is a great idea — far better
than some example programs that are
supplied. Debugging one's program is
aided by a variety of options for listing
extra information: memory locations and
p-code instructions for instance. There's
also a post-mortem dump, which shows
the current contents of the variables.
This is standard Pascal plus extensions.
The extras make the ML environment
more livable, and add file functions.
There is a built-in definition for string
types, and an else added to the case
statement. I'd like to see some string
functions added.
There are no facilities built-in for col-
our or sound, though a sample ML pro-
cedure is given to change the screen col-
our. Although there is a peek/poke
mechanism, a mem array, this seems to
address pure RAM, so a procedure is
necessary to get to the VIC chip, chang-
ing byte 1 to switch memory. Rather a
roundabout way to change colours!
There are all kinds of ways to go
beyond the limitation of one source
creating one object: overlay segments,
program chaining, calling a separately
compiled Pascal program as a subroutine,
external ML subroutines, included source
code, and continued (chained) source
code! That should keep most program-
mers content.
The result of your pains, a tested pro-
gram, is transportable without the prod-
uct disk, but must be on a 'Super Pascal
DOS' disk. It's machine language, not p-
code. The special DOS is a blessing and
a pain. It's claimed to be three times
faster than normal (and could well be),
but this means that Pascal and BASIC
can't be mixed.
The best part of this system is the ML
integration. There is a complete
assembler, with a fair set of pseudo-ops
including conditional assembly. As I men-
tioned, a function or procedure may be
coded in ML, right in the middle of the
Pascal stuff. The utilities included in the
system complement the assembler with
routines to move hunks of memory to and
from disk, and others to view or print
various pieces.
This is an excellent development
Pascal , flawed in only two respects. If the
problem with supporting two drives were
cleared up, I would forgive it the amount
of customization it has wreaked upon the
C-64 architecture. Oxford Pascal is still
the friendlier to a Pascal neophyte, but
once one is over that initial hump, Super
Pascal will probably be the more
satisfying. □
Limited time offer
SSDD- $11.00/box
DSDD - $14.00/box
{Minimum purchase - 5. Delivery extra.)
Switch
to the highest
quality, lowest
priced brand name
diskettes available
in Canada.
Q. Who has switched?
A. Professional and educational
institutions, national accounting
firms, major engineering firms,
software houses, computer
retailers and the Toronto Pet
Users Group.
In Bulk - 3 1 /2 inch discs
SSDD $3.50 each / DSDD $4.00 each
IX
Programmers Guild Products Ltd., 255 ManuLife Place, 10180-101 St.
Edmonton, Alberta T5J 3S4 Phone: (403) 428-6229
VISA
fMa»t»rCoid)
What to look for in a Compiler
by Dave Powell
If you don't know what you're looking for
— how will you know when you've found
it? This was the question that occurred
to me late one night after yet another
disappointment in my ongoing search for
the Perfect Pascal. That's when I decid-
ed to write this article. Possibly, when it's
finished, I'll know what I'm looking for,
and it should help you out there, even if
you didn't know you were looking!
Here's what I want: a good develop-
ment environment; a reasonably full and
accurate implementation of the official
language; simple access to the standard
C-64 facilities, such as colour, sprites,
sound and full -screen interaction; fast
running object code, which can be run on
any C-64 (without the protected disk); the
ability to read and write standard C-64
files from a Pascal Program; enough in-
formation to allow a developer to insert
ML routines if necessary; and the ability
to create large programs from pre-
written segments — preferably without
having to compile them again.
Now, is that much to ask? Apparently
it is. Two of the compilers I've seen don't
even pass the first hurdle. Let's go into
some more detail.
Development environment
I want a product that will give me quick
turnaround for problem solving. For a
short program, it should be possible to
make a change, recompile and run in one
or two minutes. If there is more than one
compile error in my code, I want the op-
tion of seeing them all. In practice, this
means compiling in memory, or using two
drives, otherwise one ends up pumping
plastic in and out of the slot. I do not tike
the solution requiring the code to be
copied to the product disk.
The editor is critical. An ideal solution
combines the standard 64 built-in
facilities with extras like renumber, auto
number and, preferably, a copy and move
function. (The latter is particularly useful
with Pascal , in which — because the com-
piler insists that everything be defined
before it is used — one frequently has to
shuffle procedures around as develop-
ment proceeds.) A helpful feature is
automatic indentation to match the
previous line.
If you will be adding many ML
routines, then a built-in assembler will
come in handy. Such testing facilities as
a trace, variable dump, and a table of ML
addresses of each procedure, are very
handy, because without the interpreter to
make instant changes, you'll want to get
as much information out of each compila-
tion as you can. (The faster the compile,
the less this matters, but it's still very dif-
ferent from BASIC.)
Lastly, it's important to be able to get
listings of everything required. Little
things, like being unable to print square
brackets, can be very frustrating.
Full implementation
This requirement is flexible: a lot depends
on how much program portability you
need. Naturally, if there is a particular
language feature you need, the compiler
should support it. Most implementations
will have a workable subset.
In Pascal compilers, most program-
mers will look for extensions that will
save them work. Notably, string defini-
tion and manipulation is missing from the
standard. Many compilers implement
some kind of string support and, depen-
ding on how good it is, you will be more
or less frustrated when it comes to
writing home applications, rather than
textbook examples.
C-64 features
Many programs written in the home will
want to use C-64 features. What use is
a colour monitor or TV if it needs an ML
program to change colours? Not everyone
wants to program the SID chip — does
the compiler have built-in functions to
help? How is I/O to and from the screen
handled? Does the compiler allow reading
to and writing from specific screen loca-
tions? If the answers are no, is it still
possible for the programmer to provide
these facilities? Is there an equivalent of
peek and poke, and will the usual
operating system memory locations still
be valid? I like to see enough extensions
written into the language to handle the
majority of 64-specific needs.
Independent object code
What I'm looking for here is the ability
to compile a program and put the object
code on a new disk that I can sell, give
away or whatever — it is independent of
the product disk. More than that, a ten-
line program should not take up thirty
blocks on the disk! Some compilers create
a run -time package that takes for ever to
reload. Naturally, I'd like the object code
to be efficient ML, not semicompiled
code.
M/L interface
From time to time, one may need the
speed of pure M/L. The compiler should
allow a JSR into a routine, and the
documentation should be sufficient to
determine where to put it. Some com-
pilers allow assembler code to be inter-
mixed with Pascal source code — that's
the ultimate in convenience.
Suppose you have a routine that will be
useful in several applications. If you
merge the source into each application,
then any improvements in the routine will
either get left out of the later applica-
tions, or will be a pain to update. In a
compiled language, it's sometimes possi-
ble to include the source code for the
routine at compile time, in which case the
new routine will get picked up when the
application is recompiled. With a dynamic
load technique, on the other hand, the ex-
ecutable code for the routine is brought
in at run time. This results in every ap-
plication getting the same version
(although in practice there may still be
different versions on different diskettes).
Each of these techniques has its advan-
tages and drawbacks. A good compiler
will allow the developer to use them alone
or in combination.
Now, if I was going to be scientific, I
would evaluate each attribute that I was
looking for, accord it a weight in propor-
tion to its importance to me, then grade
each compiler on each attribute. The sum
of the products of grade and weighing is
the score. Then I would buy the compiler
with the highest score. Did you see the
snag? The only way to grade a compiler
is to use it for a couple of months!
In the Pascal review's that accompany
this article, I've attempted to cover some
of these points. A couple of compilers had
such an unfriendly development environ-
ment that I did not persevere in using
them. In those cases, much of the review
is based on the claims of the manual. This
is not necessarily an accurate reflection
on the product. Have I found the right
one for me? No, not yet, but some have
come close. □
12 Issue 23
Language arts
by Jim Butterfield
Copyright © 1 986 Jim Butterfield. Per-
mission to reprint is hereby granted, pro-
vided tkis notice is included in the
reprinted material.
A language is more than just a method
of communicating information: it also in-
volves transforming the information in
some way. ASCII is a code, not a
language: it doesn't modify the data in
any way • When we express a thought in
English, French, or Chinese, we adapt
that thought to the 'mindset' of the
language involved. The idea often comes
through slightly modified by the
language: translators often have dif-
ficulty carrying a thought from one
language to another.
The same is true of computer
languages. Your choice of Fortran,
BASIC, COBOL, LOGO, machine
languge, Pascal, C, Lisp, Modula 2, COM-
AL, APL, or Snobol (to name just a few)
will influence the way you approach a pro-
blem. And most languages have dialects:
for example, there are many BASICs to
choose from.
From a human standpoint, there are
two general quality levels of person/pro-
cessor communications: poor and lousy.
A simple question such as 'Got the time?'
might produce:
?syntax error
Poor communication both ways. Or you
might get:
command 'got' not in vocabulary
Better, hut not much.
file 'the time' not found
At least it's trying.
the time at noon today was 12:00
This isn't too useful.
explain 'got'
This is going to take a while.
We have to reshape our thinking to
communicate with a computer. The man-
ner in which you type commands is a
language, and so are the responses you
receive (oddly enough, these input and
output languages are different).
When a program runs, the information
we type in is often a kind of language.
This is especially true if we have a large
number of options. Thus, your word pro-
cessor's commands consitute a language ,
and some WP's have better languages
than others. Spreadsheet programs, too,
have their own languages. You need to
become proficient in the use of these
languages in order to use the programs
efficiently.
Interpreters and compilers
The 'formal' computer languages -- For-
tran, BASIC, and so on — are generally
grouped into two types: compiled and in-
terpreted. For those unfamiliar with the
terms: a compiled language (such as For-
tran) must be completely written and
then translated ('compiled') before it can
start to run; whereas an interpreted
language is translated as it runs. Compil-
ed programs run faster; interpreted pro-
grams start quicker. If a compiled pro-
gram needs a change, it must be re-
compiled — a lengthy process; an inter-
preted program can be fixed and
restarted in a few moments.
Early computers were expensive and
could do only one task at a time. All pro-
grams were compiled for fast run time.
Fortran and COBOL dominated the high-
level language world.
In the mid-1960s, computers were still
expensive, but multitasking became prac-
tical. One slow job wouldn't hang up the
whole computer. An array of 'computer
ports' allowed many users to be con-
nected. A single 'interpreter' program
could run many users' jobs at virtually the
same time. The 'time-sharing' computer
concept started in the field of education
and spread to computer service com-
panies. The first two interpreted
languages were JOSS (later adapted to
FOCAL, and now almost forgotten) and
BASIC.
The BASIC languages we see today are
greatly changed from the original
BASIC, but the style is still recognizable.
Good old, sloppy old BASIC. . . it's so
universal in small computers that it seems
unlikely that it will ever be superseded.
There's both joy and pain in 'spaghetti
code' , and BASIC lets you write any way
you want.
With the advent of personal computers
in the late 1970s, interpreted languages
— BASIC especially — became the stan-
dard. Interpreters took up less space in
these small computers (there was even a
2K tiny BASIC!), and they were more
friendly to beginners who were just
discovering computers. The interpreter
could be placed in ROM — read only
memory, another technological innova-
tion — so that the language would be in
place the moment the computer was turn-
ed on.
Now we're going through a period of
reflection and consolidation. There are
now compilers for languages such as
BASIC, which were designed to be
interpreted. These can be only partially
successful. For example, the design of
BASIC leads to clumsy handling of some
variables — especially small integers —
and a compiler must preserve this
awkward logic or risk being
'incompatible'.
On another front, 'dual' languages have
been designed , such as Pascal, which are
capable of being either interpreted or
compiled. Even so, in practice it seems
that commercial packages seldom do both
jobs well . . . they always categorize
themselves into one camp or the other.
I can recall asking one of the COMAL
principals why they had no compiler for
their language. He emphasized that
COMAL was designed as an interpreted
language, and that specific language deci-
sions had been taken with this in mind.
He was correct . . . but I still pine for the
best of both worlds.
Which, when and why
I think that most people will choose a
language based upon the kind of pro-
grams they want to write. For payrolls
and billing statements, a language like
COBOL is wonderful. For advanced
engineering, Fortran has major advan-
tages; artifical intelligence — Lisp or Pro-
log; text editing — Snobol;
mathematically-oriented material —
APL. The list goes on , and different pro-
grammers will have their own favourites.
Some languages seem to be in the eye of
a storm: for example, C is an object of
both love and hatred.
But most of us can't go out and learn
a new language every time we have a new
program to write. We must develop skills
with a few selected ones. And in most
cases, the most prevalent language will
turn out to be. . . BASIC.
This leads to the next question: which
BASIC? But that's a question for another
time... □
TPUG Magazine 13
The C Language
by Ajay Jindal
First, a little bit of history. C is a member
of the 'Algol family' of algebraic
languages. It has more similarities to
PL/1, Pascal and Ada than to BASIC,
Fortran or Lisp. C was first implemented
on a DEC PDP-11 by Dennis Ritchie at
Bell Laboratories in 1972. At about the
same time, the Unix operating system
was being developed. The two were, in
a sense, merged. Unix was rewritten in
C, and a C compiler was a part of the
Unix system. C's ancestry includes Algol
60 (I960), Cambridge's CPL (1963),
Martin Richards' BCPL (1967) and Ken
Thompson's B (1970), which was also
written at Bell Labs. C is not a dialect of
these languages, but it is a descendant of
them.
C is a compiled language. You write
source code using an editor, translate the
source code into machine code with the
compiler, before executing the machine
code. Because C syntax was designed for
easy conversion of program statements
into machine language, this process
makes for fast, efficient programs. In a
sense, then, C is very close to ML. Don't
get the impression that you have to
memorize a lot of op-codes and memory
locations, though — C has variables,
loops, functions, arrays, and most of the
familiar high-level statement types you
probably know already from other
languages.
There are usually two ways of writing
code in C: a high-level and a low-level
style. If you are just starting out, you
would probably use the high-level style,
because it is easier to understand and
similar to other languages. However,
compiling this type of code is somewhat
less efficient. Using the low-level coding
style requires you to understand the
language very well, as well as the com-
piling method and the concepts of ML.
Such code has an almost one to one cor-
respondence to ML and is very efficient.
For example, to increment a variable
count by one, one could either write
count = count + 1 or + + count. Most
machine languages have an increment
operator in their instruction set, so for
the second version the compiler simply
generates an increment instruction. As
programmers gains experience with C,
they can write their code so that it lends
itself more and more to the compilation
process. This permits a gradual transition
from a high-level to a low-level language
without having to learn about things like
registers, stacks, program counters and
relative branches. If, on the other hand,
you would like to use the high-level style
to make your program more understand-
able, C lets you do just that.
C is easy to learn. One can learn most
of the basic features of the language very
quickly, and start programming right
away. Once you feel comfortable with C,
you can start delving into more advanced
features. C is a very small and compact
language, with relatively few keywords
(about 29; some versions have more). It
also possesses a particularly rich set of
operators but, again, beginners can get
by with only a familiar subset of these.
Among the statement types offered by C
are looping structures like while, for and
do, declarations for integer, floating
point and character data types, and deci-
sion making structures like if.
Prominently absent from this list, as
you may have noticed, are statements to
handle input and output. Strangely
enough , if you are accustomed to other
languages, C doesn't have any! However,
a standard part of every C system is a
library of functions to perform I/O and
other tasks for which the language itself
does not provide. These functions are
customized for the hardware that the
compiler is running on so that the com-
piler doesn't have to worry about it. This
feature aids in the relatively simple port-
ing of code to different C compilers run-
ning on various types of machines.
Because the language is small, it
doesn't take much time to learn all the
keywords, but to wield the power of them
fully takes a lot of practice. This is
especially true for BASIC programmers,
because so many new concepts are intro-
duced that don't have a BASIC equival-
ent. In some respects, you have to forget
about BASIC and start over again.
C is a portable language . A typical C
program has no direct references to hard-
ware registers, so in theory a given C
source program could be compiled and ex-
ecuted on any computer for which a C
compiler has been written. Most C com-
pilers are derived from a Portable C Com-
piler (PCC) written at Bell Labs. Because
of this, they all compile identical source
code into roughly identical machine code.
Although hardware incompatibilities
mean that C programs in general are
something less than totally transportable,
more than 95% of C source code can be
compiled on other computers without
modification. And a special facility called
the preprocessor does provide a rational
way to treat hardware-dependent items
like screen memory. The preprocessor is
responsible for scanning the source code
before compilation , and executing certain
special instructions — macro definitions,
conditional compilation, inclusion of other
source files and constant definitions.
Hardware-dependent constants defined
in preprocessor instructions can be
altered easily when the time comes to
port the program, without affecting the
source code itself.
There is no 'official ' standard for C, but
most implementations follow the stan-
dard set in the book The C Programming
Langiiage by Brian Kernighan and
Dennis Ritchie. In 1982, the American
National Standards Institute (ANSI)
formed a technical committee to for-
mulate a standard for C, its library
routines and execution environment.
These standards aren't expected to
deviate much from the 'unofficial' stan-
dard already in place.
C has some unique features. It has a
strict syntax but no confining rules. You
can do anything you want as long you
don't break any syntax rules. For in-
stance, if you declare an array of 50
elements and try to reference the 60th
element in your program, C won't stand
in your way — the compiler will not
regard this as an error. Of course, the
program will give unpredictable results.
This puts an extra burden on the begin-
ner, but a seasoned programmer may find
a way to take advantage of C's relaxed
attitude. Another distinctive feature is
the use of pointers. ML programmers are
already familiar with pointers, which pro-
vide a way of referencing a variable
without naming it explicitly. Arrays
belong to the high-level style of program-
ming, while pointers are low-level. Ac-
tually, arrays in C are changed to
pointers during compilation. Pointers are
faster than arrays and are very important
for creating data-structures such as link-
ed lists and trees.
In C, every program module is a func-
14 Issue 23
tion. Even the mainline code belongs to
a function called main. There is no
distinction between a function and a
subroutine or procedure — a subroutine
is simply a function that doesn't return
a value. Functions may receive
arguments, but can only return a single
value. The print 'command' in C is really
a prewritten function in the standard C
library.
In common with other structured
languages , C allows both local and global
variables. The programmer has great
freedom in declaring where in a program
a particular variable will be valid — the
'scope' of the variable. Sometimes, the
scope will be only a few lines; most often
it will be an individual function. Variables
of larger scope may be shared by all the
functions within a source file, or by all the
functions in a program consisting of
several files. The capability of declaring
variables of narrow scope encourages the
writing of modular programs, for you can
guard securely against variable-name
conflicts in a way that BASIC does not
permit.
C has only three fundamental data
types: integer, floating point and
character. All other types must be
derived from these three: a string, for ex-
ample, is an array of characters. Records
containing different fields of different
data types can be constructed. The com-
plexity of available data structures is vir-
tually unlimited. In keeping with the ML
tradition, bit manipulation operators are
also available.
Another unusual feature of C is that
statements can legitimately include other
statements in places where most
languages would insist on an expression.
Actually, it would be more accurate to say
that many types of C expressions are also
complete statements. Here's an example:
printff "\n %c %c",c =
getchart ) , ++c] ;
This is a single statement (all statements
end with a semicolon). But it also contains
two expressions (c = getchar() and
+ + c) that could be used as complete
statements in themselves. In most
languages, at least three statements
would be required to take the place of this
one.
C is a general-purpose language. It has
been used to write operating systems,
graphics programs, games, word pro-
cessors, data base managers, business
program and many other things. Its
popularity comes from the fact that it
makes both programs and programmers
more efficient. Its execution speed can
approach that of hand-coded machine
language but, thanks to its portability,
programmers don't have to learn a new
instruction set each time a new micro-
processor comes out. The speed dif-
ference between compiled C and human
generated ML is negligible in all but the
most demanding cases.
Implementations of C are already avail-
able for the Commodore 64, the Amiga
and nearly every other computer. If you
are seriously interested in writing fast,
portable and easily maintained programs
on your machine, you should be serious-
ly interested in C. D
OS/9 Software
NOW AVAILABLE!
Word Processor -
Stylograph 111
Mail merge, Spell checker. Menu driven,
fast. Extensive features. Formats to screen
as you work US $149 Cdn $210
C Compiler
A full implementation of K & R standard C,
with double precision variables.
US $138 Cdn $170
BASIC09
A fully structured, sophisticated semi-
compiled (I code) BASIC. See Byte
magazine April 1984. . US $110 Cdn $155
FORTRAN 77
Full FORTRAN compiler. . . coming soon.
..US $120 Cdn $166
DynaStar, DynaForm,
DynaSpell
A full screen (similar to microEDIT) editor,
text formatter and spell checker.
.....US $90 Cdn $127
Other: E J ascal, DynaCalc, Database etc., available on
demand.
To Order: Send a cheque or money order {add $10 for
shipping/handling and 7% PST where applicable) to:
TPUG,
101 Duncan Mill Rd., Suite G-7,
Don Mills, Ontario. Canada M3B 1Z3
Amiga BASIC
by Dick Barnes
Copyright © 1986 ISPUG
The SuperPET Gazette, which Dick
Barnes edits, is the official newsletter of
the International SuperPET Users
Group, and is an excellent source of in-
formation on the SuperPET and much
else besides.
The buggy ABasiC for the Amiga has
been replaced by a new Amiga BASIC
from Microsoft. Commodore began
distributing this new dialect with Vl.l of
Amiga's operating software. I was con-
siderably surprised to find that Microsoft
has not only entered the 20th century
with many structured features, but has
also maintained compatibility with older
versions of the language — no mean feat.
A flavour of the language
At last you may indent code.
While. . .wend is built into the language.
You may construct any structure wanted.
Labels are allowed — and must be follow-
ed with a colon. Line numbers are op-
tional (so is free speech in the USSR, and
on the same terms, as we later see). The
language converts all keywords to
capitals, whether you like it or not.
Variable names may be up to 40
characters long. If . . .else if . . .else end
if is now allowed, in the form shown, with
no limit on the number of else ifs. The
then statement is required; else is
optional.
There is a price for upward compatibili-
ty. Variable names aren't sensitive to
case: alpha, Alpha and ALPHA are the
same. You may use periods in variable
names: file name fails; filename is okay.
There are no modern mat statements; all
work on arrays must still be done in loops.
For compatibility, Microsoft hauled its
archaic and clumsy method of handling
REL files into Amiga. You have a bushel
of separate intrinsic commands specific
to random -access files, of which only two
(record length and record number) are
necessary for such work in a well-
designed language. Line input, however,
did see the light of day, although the
simpler I input was lost along the way.
Amiga BASIC has two types of
subroutines, one of which is a 'sub-
program' with local variables and
parameter-passing. Ordinary subroutines
may be entered with a gosub to either a
label or a line number. Subprograms may
be called, as shown below. You have two
options: in the first, you pass arguments
by reference. This changes the values of
a, b, and c in the main program by what
is done to x, y and z.
CALL sendscreen( A, H, C) 'ere
ate A,B,C val ues
SUB sendacreen( x , y , z) STATI
C
i-F <condition> THEN EXIT 'm
anipu lat e x,y,z
. . . statements
END SUB
In the second option, you may enclose the
arguments in parentheses, as in:
CALL gend9creen((A) ,(B) ,(C)
)
The values of a, b and c in the main pro-
gram remain unaffected. In short, you
have full control over whether a sub-
program's variables are local or global.
In addition, you may define any variable
in a subprogram as a shared variable,
which may be used in any other
subroutine or in a main program, and
which passes its value there. So far, so
good.
Unfortunately, recursive subprograms
aren't allowed. Do you see the static that
follows the subprogram name above? It's
required. Nobody in his right mind
demands that subprograms be designated
static if that's the only flavour you can
define. And it is! Static (like other
features of this BASIC) is derived from
C. Static variables retain their value in
a subprogram between calls. The other
C option of automatic variables, which do
not retain their value between calls, is not
found in Amiga BASIC, but the presence
of static indicates that Microsoft plans to
use it in later versions. Either that or
auto variables were taken out at the last
minute. Anyway, because all subroutines
are static and all variables retain their
values, recursion becomes deadly; the
manual warns users not to try. Too bad.
The manual comes with an errata sheet
that asks you to remove several
references to reset (which closes all open
files). It seems they planned to have it and
jerked it out at the last moment — along
with the auto variables. We'll later see
why.
Line numbers vs. labels
You are indeed free to use line numbers,
which I prefer for reference when I list
or edit. But there is utterly no way in
Amiga BASIC to generate those line
numbers automatically, or to renumber
them thereafter. The language doesn't
even check to see if line numbers conflict
or are in proper order. Microsoft obvious-
ly doesn't want you to use line numbers.
How do you list a part of a program?
Well, er . . . uh . . . you'd better stuff in
named labels every 20 lines or so, or add
line numbers on the same basis — or you
must list your program from beginning
to end to find the part you want. When
we tried to list the subroutine below
(without the label test:), Amiga BASIC
refused. You must add either a line
number or a label (as with test:) despite
the fact that the subroutine is already
named. And there is no search or
search/replace in Amiga BASIC's editor,
either.
SUB teat STATIC
END SUB
Suppose you want to add a library routine
from disk to a program on screen. You
merge it at the end, then copy and paste
into the program. Line numbers have no
effect on a merge.
Directories
You're supposed to be able to get direc-
tories by saying, for example: files
"dfI:basic.programs". Do you get the
Amiga's typical two-column listings?
Nah! You get a list in one column, and it
scrolls right off the screen unless you are
fast enough to hit right-amiga s to stop
that listing. Golly, when will those folks
in Belleview learn to pause listings at the
end of each screen page? Sorry to say
that half the files on our Workbench disk
are never listed at all. It's a bug. Well,
click over to DOS for directories. . .
Immediate mode
You may not cursor up and amend. We're
used to working out difficult algorithms
in immediate mode, by defining our con-
stants and variables and testing varia-
tions in often-complex code. You won't
do that in this BASIC: you must retype
ail the code each time you test, which is
so time-consuming that you are far bet-
ter off to make a program of the test . And
— a run always clears the screen (you
16 Issue 23
can't control that), which wipes out all
previous results. Most of the utility of im-
mediate mode is thus destroyed. We
retreat to making pencil copies of data
we've been handling on screen for years.
Back to 1920.
You have two separate windows: one
for program output, one for listings; you
must interminably click your way back
and forth between them. It seems this
was done so that you can see your code
execute in one window and trace the ex-
ecuting line in the other. We tried it for
a couple of hours and conclude that the
folks at Belleview are mad. The output
window is always obscured by the list
window; a little red border skips from one
executing statement to another so swift-
ly that you can't follow it. If you try trac-
ing one line at a time, you find that every
comment is considered an executing line.
We'd much prefer a single window with
the executing statement printed at top or
bottom of the screen. Programmers often
get carried away by enthusiasm for fan-
cy and faddish new approaches . So it is
with two windows in this BASIC. They're
a useless pain in the behind.
Error messages
Despite a large error window ("Syntax
Error!"), and a red border around the line
of error, Microsoft's error messages are
no more useful now than they were five
years ago. You aren't told where on the
line the error is, nor why it's an error. Ex-
ample: what's wrong with the statements
below? You get an error message
'ELSE/ELSEIF/ENDIF WITHOUT an
IF'. Is that the real problem? Those ac-
customed to systems with intelligent er-
ror handling and marking will weep. The
problem? Shucks, we left out a then.
IF x OR y
PRINT "Whoa!"
END IF
Editing
The editor in Amiga BASIC is both
primitive and clumsy. It is also very slow.
The screen scrolls very slowly when you
page up or down by screen page. It takes
one full second to move the cursor from
the top tine to the bottom of a 19-line page
unless you shift the cursor with the
mouse. The interpreter of Amiga BASIC
may be in assembler; the editor is done
in molasses.
Editing within Amiga BASIC other-
wise is fairly handy. You delete and copy
lines or sections of code by highlighting
the material with the mouse. You then
copy the material to a buffer (called the
'clipboard'). You may copy erased code
to a new position, shown by the cursor,
with Amiga P (for paBte). If you choose
to copy, the original code remains, but a
copy is put into the clipboard; you may
insert that copy anywhere else in text.
This works well on small segments. We
tried to delete the second half of a larger
program by highlighting with the mouse.
By stopwatch it took over four minutes
to highlight most of the material ; then we
crashed (we suspect that the clipboard
buffer overflowed). So you must delete in
small sections. In sum, you'll probably use
this editor to debug code; it is far too slow
and clumsy for long editing sessions.
Fortunately, Amiga's multitasking
allowed me to use Ed, Amiga's screen
editor, to write programs. And then, with
Ed running concurrently, I crashed
Amiga BASIC six times in two hours and
forty minutes, with nary a program in
memory longer than 80 lines. I kept get-
ting 'Heap Full' errors.
von Lundsdorff
There's a text-to-speech demo on the
Amiga BASIC disk. I cranked it up and
found it hilarious. The default voice set-
tings sound precisely like a Nazi villain,
so I tried: "Let me introdusse myzelsf;
I am Count Erich von Lundssdorff , und
diss is Frankenstein." The extra sibilants
were necessary for proper effect. The
range of voices possible is limited: I tried
for hours to get rid of the Teutonic
flavour, without success. But those who
want trolls, ogres, wizards and witches
will have great fun. The built-in
translate* function converts any Engish
sentence into proper phonemes for the
voice. If you want to bypass translate?
and control the voice directly, you may
do so — but with phonemes, glottal stops,
and such.
Windows, mice and menus
Amiga BASIC gives the programmer
control over all the features of the Amiga,
from pull-down menus to windows and
the use of the mouse and joysticks — if
you care to use them. A very large part
of the lanuage is devoted to these things;
they are powerful and easy to use.
ML interfacing
Amiga BASIC provides both varptr (the
address of numeric variables) and sadd
(the address of a string), so that you may
access any variable by its address. You
may therefore pass these named variables
to ML routines. You may also call ML
library routines that you write yourself
or those already present in Amiga.
A few nice touches
The index function to find a substring
within a larger string (called instr) allows
a secondary index, as in:
INSTR(7,X$,"Brown"). In this case,
you look for "Brown" within a larger X$,
but you start searching at the 7th
character in X$. The secondary index is
optional . Very handy.
More importantly, you may identify
variables either by defining their data
type (as in Pascal or C), or by using suf-
fixes, as in other BASICs. The identifiers
shown below (% for a short integer, &
for a long integer, and so on) take
precedence over any stated definitions.
Definition Meaning Suffix form
DEFINT var Short integer (16 bits) var%
DEFLNG var Long integer (32 bits) var&
DEFSNG var Real (7 digits, 4 bytes) var!
DEFDBL var Real (1 6 digits, 8 bytes) var#
DEFSTR var Siring var$
In subprograms, the definitions may be
purely local , or they may be shared if so
declared within the subprogram. If they
are shared, they become global variables
in the main program, and may be used in
other subprograms if declared there as
shared.
Tests on variations
I ran a number of tests, and was surpris-
ed to find no difference in execution time
with or without line numbers. Even more
surprising: a program using defined
variables (as above) runs faster than one
where variables are suffixed with their
type (defint y is faster than y%). Last,
and most astonishing, multiple
statements per line are slower to execute
than single statements per line! In this
language, there is utterly no excuse for
cramming code together in the fewest
possible lines. All these things are
positive advantages: they reward simple,
readable code.
Summary
This BASIC is much improved over
ABasiC but just doesn't go far enough.
The code is far easier to read and main-
tain than older, unindented, and unlabell-
ed versions. It was hastily and drastical-
ly shortened at the last minute to let it
fit in available memory. As time goes on
and code is boiled down, or as more
memory becomes available in the Amiga,
I wouldn't be at all surprised to see auto
variables, recursion, reset, additional op-
tional data types, and some fully struc-
tured options. It is far superior to any
Microsoft Basic I've seen before, and a
large step in the right direction. □
TPUG Magazine 17
Amiga BASIC sound and screen
by Chris Johnson
Amiga BASIC makes the advanced sound
and graphics features of the Amiga easily
accessible to the BASIC programmer.
The use of 'bobs' (blitter objects) and
sprites is fully supported in Amiga
BASIC; screen images can be captured
in an array and placed elsewhere on the
screen or saved to disk; and the sound
command makes music easy to imple-
ment. Unfortunately, some aspects of
screen manipulation are not supported as
fully as in ABasiC.
Using colour
Colours for the various graphic com-
mands are defined using the palette com-
mand. Up to 32 colours can be defined by
the amount of red, green and blue in the
final colour. For example, palette 1, .8,
.6, .53 assigns a brown to colour-id 1. The
number of colours accessible at any time
is determined by the depth {number of bit-
planes) of the screen (set by the screen
command). If the palette command is
omitted, Amiga BASIC uses the colours
defined with the Preferences tool . color
<pen>,<background> sets the
background and foreground colours using
the colour-id as defined with palette.
Graphics commands are executed using
the pen (or other, specified) colour. These
commands include:
• Line, which can also be used to draw
a rectangle by specifying two opposite
corners and adding ,b after the co-
ordinates or ,bf to fill the rectangle with
the pen colour;
• Circle can be used to draw arcs and any
variety of ellipse;
• Areafill fills an area defined by area
statements;
• Paint fills an enclosed area with a
specified colour; and,
• Pset and Preset set a point on the
screen. Preset differs from Pset in that,
if you do not specify a colour, it uses the
background colour.
Commands that draw lines or fill areas
can be modified with pattern, which sets
a 16-bit mask. Pattern &hffff would turn
on all the bits when a line is drawn; Pat-
tern &hfOfO: line (0,0)-(100,100) draws
a dotted line. (The &h in these commands
specifies that the following number is to
be interpreted as hexadecimal.)
Bobs and sprites
Bobs and sprites are controlled with a
series of object commands , each of which
has a different suffix:
• .Shape assigns an object-id number to
an object definition contained in a string
expression;
• .On and .off make an object visible or
invisible;
• .X and .y place the object at a specified
point in the x or y axes or, used as a func-
tion, return its position;
• .Start and .stop set an object in motion
or freeze it;
• . Vx and .vy set the velocity of the object
in X and Y coordinates;
• .Ax and .ay set the acceleration in pix-
els per second per second;
• .Priority sets a bob's priority. A bob
will appear in front of an object with a
lower priority and behind one with a
higher priority;
• .Clip defines an area of the screen
beyond which an object will not be drawn;
• .Hit allows selection of which other ob-
jects will cause a collision;
• .Close releases memory assigned to an
object.
Collisions between objects are detected
by event trapping, which is enabled,
disabled and suspended by collision on,
collision off and collision stop respec-
tively. When enabled, up to 16 collisions
can be queued and read by colli-
sion^ object-id >), which returns either
the number of another object or a
negative value indicating top, left, bottom
or right border.
Object Editor
The creation of a bob or sprite can be
done with a utility program called Ob-
j K dit. which is one of the demo programs
on the Amiga Extras disk. Written in
Amiga BASIC, this program allows you
to draw your bob or sprite on the screen
with the mouse. It includes a 'zoom' com-
mand that enlarges the object for detail-
ed work. The objects can be saved to disk
and read into memory when necessary.
Concise examples are given both in the
manual (with a few errors) and on the
disk.
Screen Get and Put
Areas of the screen can be stored in an
array with get, then put to the screen.
An array of sufficient size must first be
dimensioned, then get is used with the
pixel coordinates that define a rectangle
containing the image . These can be put
in one of several ways: pset or preset, or
the images can be anded, ored or xored
with the image already on the screen.
Printing to the screen
Printing to the screen can be done with
print, print using and write. Print
behaves in the normal fashion, as does
print using for those who have used it
before.
Write, on the other hand, prints an ex-
pression list, the items of which must be
separated with commas. Numbers are
printed without leading spaces, strings
are printed in quotes, and the delimiting
commas are printed.
Width defines the maximum number of
characters that will print on a line: Amiga
BASIC will not print a carriage return
when it reaches the edge of the screen if
width is set to the default of 255.
There is no print at command in Amiga
BASIC (there is in ABasiC) and the
locate command positions the cursor only
by character, not by pixel. Positioning
text at a precise location on the screen
in combination with graphics is thus made
somewhat difficult. The ptab command
moves the cursor horizontally by pixel.
There is no direct method for positioning
text vertically on anything other than the
normal printing lines.
There are two awkward ways around
this limitation. The first is to print the
text to the nearest line, then scroll a por-
tion of the screen until it is where you
want it. The second is to print the text
somewhere where it will not interfere and
store it in an array with a get. This can
then be put anywhere. Neither of these
is entirely satisfactory, and one misses
the ease with which this operation could
be performed in ABasiC.
For some uses, however, scroll is a
handy command. Two corners of a rect-
angle are defined, followed by the number
of pixels to scroll the screen in both the
x and y axes. This allows diagonal as well
as left, right, up and down scrolling.
There are also no commands for cursor
movement, inserting characters, clear to
18 Issue 23
end of display or clear to end of line. The
ANSI standard commands which the sys-
tem supports and which work in ABasiC
(see Amiga Screen Magic, TPUG
Magazine #22) do nothing in Amiga
BASIC. Homing the cursor must be done
either with els or locate 1,1. Relative cur-
sor movement (to the previous line, for
example) has to be done by reading the
current line with csrlin:
y = csrlin
x = pos(B)
locate y-1 , x
Sound and music
The easiest method of getting a sound
with Amiga BASIC is by using the stan-
dard beep (or print chr$(7)).
But you probably want to do more than
this, and in Amiga BASIC it is not all that
hard. After the convoluted method of pro-
ducing sound in ABasiC, this is child's
play. Unfortunately, there is no command
for setting the ADSR envelope, as there
is in ABasiC. ABasiC also contains func-
tions that can tell you whether any voice
is still playing. New sounds can then be
sent to an inactive channel. Amiga
BASIC has none of this.
There are really only two commands
you need to know to create music: Bound
and wave. Wave forms are set up in int-
eger arrays of at least 256 elements; each
element in the array must be in the range
of -128 to 1 27. The array is then assigned
to wave to 3, corresponding to the four
voices.
Notes are played with: sound <fre-
quency>, <duration>, <volume>,
<voice>; the last two parameters are
optional. Sound wait suspends execution
of sound statements until a sound
resume is encountered, allowing syn-
chronization of all four voices.
The music demonstration provided with
Amiga BASIC, J.S. Bach's Jesu Joy of
Man's Desiring, is a magnificent exam-
ple of programming that will repay a
close examination. It is not immediately
apparent how the program works, but
with a little effort it can be used as a
driver for your own music simply by
replacing the data statements.
Summary
Though Amiga BASIC is, on the whole,
a great improvement over ABasiC, many
features have been left out. The manual
makes references to continued
developments; let us hope that these are
forthcoming. □
MA64
Sick Sullivan
MA64
a mini-language
for Music Programming
on the Commodore 64
• Add music to your own programs
• Complete control of SID capabilities
• Fast, teit-orlented music entry.
■ Easy to learn, easier to use.
• Comprehensive Manual
• Dozens of powerful commands
29-95 can. 24.95
On! Hcsiderus jJJ. 7% Prov SilesTax
Cheque. Monty Order. Visa oi MasterCard
PosUgr & Kindling Included
m\WM2>
W1LANTA ARTS
' 6943 Barrisdale Dr.
Mississauga, Ont.
arts L5N2H5
1-416-858-9298
Ifcre
Freeze -
Frame
WHAT YOU SEE
IS
WHAT YOU GET.
TOUCH BASE
STATIC CONTROL
WRIST REST
A. Grounding cord
B. Grounding aperture
X1Q
POWERHOUSE
INTERFACES
WITH YOUR
COMMODORE
TO CONTROL
YOURHOME...
FOR SECURITY
Cartridge
Expander
for C-64
Blitz compiler
Flip & File
Games Less 15%
Double your
Programming
Power. Add
speed and
versatility to
your C64 -
Macro
Assembler
package.
• News Room
and Clip Art
• Newsroom
• PaperClip
• Consultant
• Multiplan
TPUG MEMBERS 15% DISCOUNT
Video a
radiation
shield with
no-glare
filter and
grounding
cords.
nti- I
Northcastle Structured BASIC
by Chris Johnson
The pages of this and most other com-
puter magazines have seen many debates
on structured programming versus
spaghetti code, software engineering ver-
sus frontal assault, the imminent demise
or triumph of BASIC as opposed to struc-
tured languages.
As with most controversies, the truth
lies somewhere in between: if it were not
possible to write a program without a
carefully-drafted flowchart and copious
comments, software libraries would be
reduced to a fraction (hexadecimated?).
On the other hand, if nobody introduced
any structure into their software, few of
the programs in those libraries would be
more than two or three kilobytes long.
BASIC is often denigrated because of
its lack of structure , but people use it and
will continue to use it because it is both
easy to learn and the easiest language to
start with: most home computers are in
a BASIC environment as soon as they are
turned on . I have found that it is possible,
even necessary with longer programs, to
write in a structured fashion. In order to
make structured programming easier,
while remaining in a BASIC environ-
ment, I use a BASIC enhancement writ-
ten by Mike Roche of Oshawa, Ontario,
that is available from the TPUG library
for the PET ((P)TD), C-64 ((C)MD), and
the VIC 20. This useful utility is called
Northcastle Structured BASIC.
Commodore BASIC does not make it
easy to use indented listings. If you put
spaces after a line number in a program,
the editor removes them. Indented loops
and structures make a program easier to
understand. In Northcastle (which we'll
shorten to STB for the purposes of this
article), you get what you type :
10 for i -
20 a[ij
30 next i
1
to
S *
Features
STB will run all programs written with
Waterloo BASIC, and even has a few
features missing from Waterloo.
IF-THEN-ELSE: Multiple line IF
statements are supported:
140
elseif
a =
1S0
b =
a/2
160
c =
b+a
170
else
180
b =
a*2
190
c =
a/b
200
endif
Structured loops: Structured program-
ming usually avoids goto and other
statements requiring the use of line
numbers. Where a BASIC might use
goto 10 for an infinite loop, STB uses
loop . . . endloop:
10
loop
20
30
40
rem ( program in
rem
endloop
here)
To provide an exit from the loop,
endloop may be replaced with an until
statement. That very common BASIC
line:
10
get a$: if a$=""
then 10
can
be replaced with:
10
20
30
loop
get a$
until a$<>""
110
120
130
if
= 1
= a
= a«b
Since there is no reference to a line
number, these lines could be placed
anywhere in the program without
alteration.
Structures can also be exited by the
quit command. Improving on Waterloo
BASIC, STB's quit can take a parameter:
quit(2) will exit two levels of loops.
Until sets an exit condition for a loop;
while sets an entry condition — the loop
is not entered unless the condition is true.
For example:
100 while a$<>chr$( 13)
110 loop
120 get a$
130 until a$<>""
140 print a$
1S0 in$ = in$+a$
160 endloop
Procedures: Procedures are really
named subroutines. A procedure is not
executed in the normal sequence of a pro-
gram; it must be called:
10 call print title
20 loop
30 call enter info
40 until in$ = ""
S0 end
60 proc print title
70 print chr$( 147) ; : rem
clear screen
80 print " "
90 print "Procedure Demo"
100 print " "
110 print
120 endproc
130 :
140 proc enter info
1S0 rem {entry routine)
160 endproc
Procedures names can include almost
anything but colons. I have even used
proc print run.
Because there need be no reference to
line numbers within a program, entire
sections can be written separately and ap-
pended to form a finished program. (See
the listing of Appender, a utility in
BASIC that combines programs loaded
from disk.) When the procedures are all
collected, use a renumbering facility, such
as that found in BASIC Aid (available
from the TPUG library) or Power (from
Pro-Line Software) or my own Increm-
enter, a simple line renumberer (invoked
by sys 49152, x, where x is the amount
for each successive line number to be in-
cremented). Incrementer will not
renumber gotos or gosubs, but there is
no need for them when using STB.
STB differs from a true structured
language in that there is no passing of
parameters to a procedure, and the
variables are not local to it. This means
that care must be taken not to have con-
flicting variables when building a pro-
gram out of prewritten procedures.
Restore: The restore <llne number >
is the only feature of Northcastle Struc-
tured BASIC that requires line numbers.
Not that you are restricted to a number
— an expression that resolves to a line
number can be used instead.
It took me a while to reconcile the use
of line numbers with restore and con-
catenating program segments — even
using Power or BASIC Aid, a line
number after restore will not be
renumbered. There is an easy way around
it, however.
Locations 57 and 58 on the VIC and
C-64 (54 and 55 on the PET) contain the
line number being executed in low-byte/
high-byte format. Therefore, peek(57) +
256 * peek(58) can be used after restore,
assuming that the data statements you
20 Issue 23
want to read are next after the current
line. For example, I have on disk a set of
procedures that I use in programs that
include any date entry. The initialization
procedure looks like this:
110 proc date init
120 restore peek{5?)+256
*peek(58)
130 while mn$( 10) <>"Octob
er"
140 dim mn$( 12) ,m]( 12) ,
dy$C?)
1S0 for i=1 to 12
160 read mn${i),ml(i)
170 next
180 for i = 1 to 7
190 read dy$( i)
200 next
210 endloop
220 endproc
230 data "January", 31 , "Fe
bruary", 28, "March", 3
1, "April", 30, "May",
31
240 data "June", 30, "July"
, 31, "August", 31, "Se
ptember", 30
250 data "October", 31 , "No
vember", 30, "December"
, 31
280 data "Sunday", "Monday"
, "Tuesday", "Wednesday
", "Thursday", "Friday"
270 data "Saturday"
Renumbering this procedure after
appending it to a program will not affect
the execution at all.
In practice. I define a BASIC function
to do the double peek:
def fn dp(x)=peek(x)+256*pe
ek( x+1)
Then, after restore fn dp(57), a read
statement will find the next data state-
ment in the program.
Top-down programming: Perhap the
greatest advantage of NorthCastle Struc-
tured BASIC is that it allows top-down
programming. A database program could
start like this:
10 call initialize variable
3
20 loop
30 call menu
40 if u$ ■ "enter"
S0 call enter
60 elseif u$ = "edit"
70 call edit file
80 elseif u$ = "load"
90 call load file
100 elseif u$ = "save"
1 10 call save file
120 endif
130 until u$ = "quit"
140 end
1S0 :
160 proc menu
170 print "Menu": rem dum
my proc
180 endproc
By creating dummy procedures at first,
the logic of the program can be tested,
and individual sections written one at a
time.
State of the union
Northcastle Structured BASIC is small:
less than 2,000 bytes. It relies heavily on
the BASIC routines in ROM. An example
of this is the endproc statement. I said
earlier that STB procedures are just
named subroutines. You can prove this
by using return instead of endproc:
nobody is any the wiser. I usually use
return to make converting an STB pro-
gram to Commodore BASIC a bit easier:
leave the proc statement alone and
gosub to the line after it.
STB can also co-exist with program-
mer's utilities, can be turned on and off
at will, and can easily be ignored even
when it is active; it does not prevent you
from continuing to fabricate your
favourite fettucini.
STB naturally slows down BASIC ex-
ecution since it has to check for the add-
ed features, but if a routine really needs
all the horsepower it can get, write it in
CBM BASIC. Turn STB off when enter-
ing the routine and back on when
Finished.
Though not a full-fledged structured
language, Northcastle Structured BASIC
is an excellent way to start learning struc-
tured programming. It enables fast
writing of code (I have written over 5K
bytes in an evening) but does not inter-
fere with the familiar BASIC environ-
ment.
5 rem incrementer, chris
Johnson, 1986
10 fori= 49182 to i+ 94
step S :forj=0to 4
11 reada:poke( i + J) ,a;c=^c + a:
nextj:read cs
12 ifc<>csthenprint"<2 down
>Error in line"; i: fori-1
to25:a=abs(a-15) :poke542
96, a :next : stop
13 c=0:nexti
49152 data 32,241 , 183, 142,
93,691
49157 data 192,160,2,177,
43,574
49162 data 141,91,192,200,
177,801
49167 data 43, 141,92, 192,
165,633
49172 data 43,133,251,198,
251 ,876
49177 data 165,44, 133,252,
32,626
49182 data 86, 192,201 ,0,
240,719
49187 data 5,32,80,192,208,
517
49192 data 251 ,32,t)0, 192,
32 , 587
49197 data 80,192,240,41,
32,585
49202 data 80, 192,24, 173,
91 ,560
49207 data 192,145,251,109,
93,790
49212 data 192, 141,91, 192,
32,648
49217 data 80, 192, 173,92,
192,729
49222 data 145, 2S1, 10S,0,
141,642
49227 data 92, 192,76,36,
192,588
49232 data 230,251,208,2,
230 921
49237 data 252,160,0,177,
251 ,840
49242 data 96,0,0,2,138,236
10 rem appender, chris John
son, 1986 :
30 rem set bottom of basic
40 rem to top of program
50 rem currently in memory
60 t»peek(45)+256*peek(46)
-2
70 poke44,t/256
80 poke43,t-256*peek(44)
100 rem clear keyboard
110 rem buffer and get nam
e of file to append
120 poke198,0:input "<clr>
<ctrl-n>File to append"
; fl$
140 rem If no file name
150 rem entered set pointer
s back to normal
160 rem and end program.
170 if fl$=""then poke44,8:
poke43, 1 : end
190 rem use dynamic keyboar
d to load
200 rem new program, reset
pointers
210 rem and reenter program
220 print "<olr>laad"chr$( 34
)fl$chr$(34)",8"chr${ 13
)"<5 down>poke44,8:poke
43, 1 :run
230 poke198,7:poke631 , 19:fo
ri-1to7:poke631+i, 13:ne
xt : stop □
TPUG Magazine 21
COMAL: The Disk, The Cartridge
by Len Lindsay
Copyright © 1986 Len Lindsay
COMAL is a language that combines the
power of Pascal , complete with indented
structures, with the ease and interactive
nature of BASIC. The Commodore 64
versions include LOGO-compatible turtle
graphics. Two versions are available for
the C-64: one disk-based, the other
cartridge -based.
A poll taken by Commodore itself
reveals that COMAL is the first alternate
language of choice (BASIC and machine
language were more popular — but they
come with the machine). There are two
versions of COMAL for the Commodore
64, disk -loaded COMAL 0.14 (available
from most Commodore user groups, in-
cluding TPUG), and the COMAL 2.0 Car-
tridge. Both work in C-64 mode on the
C-128.
The COMAL 2.0 Cartridge is the
deluxe version of COMAL. It includes all
the features of disk-loaded COMAL 0.14,
and more. Some people consider it the
First Column: COMAL 2.0
Second Column: COMAL 0.14
Third Column: BASIC 2.0
Editing features
x x - AUTO (automatic line numbers)
x x - RENUM (renumber lines)
x x - MERGE from disk
x x - Syntax checking on entry
x x - Etelete blocks of lines
x - - FIND and CHANGE commands
x x - Pause a program listing
x - - TRACE (debugging aid)
x - - 'Quote mode' disable/enable
x - - Understands upper and lower case
x - - Erase to end of line
x - - Ooops key
Files
x x - Binary sequential/random files
xxx ASCII sequential/random files
x x - Easy one-command random file
use
x - x GET from disk
x - - Built in true ASCII conversion
Disk commands
x x - CAT (catalogue of files on disk)
x - - Pause catalog/send it to printer
x x - STATUS (disk drive status)
x - - COPY (copy files command)
x x - DELETE (scratch files from disk)
x - - MOUNT (initialize a disk)
x - - RENAME a disk file
x x - Knows when End Of File is
reached
x x - CHAIN one program to another
Numbers
x - - Accepts Hex and Binary numbers
x - x Includes Logical AND and OR
x - - Includes Logical XOR
xxx Includes trig functions
x x - Understands TRUE and FALSE
x x - DIV (integer division) operator
x x - MOD (remainder) operator
x x - Arrays with any minimum index
xxx Integer numbers
x x - Produce random integer in a range
Input-output
x x - TAB works on printer as on
screen
x x - Variable-sized print zones
x x - Print zone same on printer as
screen
x - - Set up default printer types
x - - Built in graphic screen dump
x - - Built in text screen dump
x x - PRINT USING formatted output
x x - Select output: printer or screen
x - - Select input: keyboard/batch file
x - - INPUT AT and PRINT AT
x - - Automatically-protected input
fields
x x - Allows null reply to input
x x - Allows STOP key during input
x x - Allows comma as part of input
x - - User-definable character fonts
Structures
xxx FOR loop
x x - Integer FOR loop
xx - REPEAT... UNTIL loop
x x - WHILE. . .ENDWHILE loop
x- - LOOP... EXIT loop
x x - CASE structure
x x - Multiple-line IF. . .THEN. . .ELSE
x x - Call routines by name
x - - External procedures and functions
x x - Multiple-iine procedures/functions
x x - Parameters with procs/funcs
x x - LOCAL or GLOBAL variables
x - - ERROR HANDLER (trap errors)
x x - Automatic indenting of structures
Sprites
x x - Keywords for defining sprites
x x - Keywords for setting sprite colour
x x - Keyword for moving sprites
best programming language on any 8-bit
microcomputer. Once you use COMAL
0.14, you do not want to go back to
BASIC. And once you use the COMAL
2.0 Cartridge, you will not want to go
back to COMAL 0.14.
COMAL characteristics
With the cartridge, COMAL is there
every time you turn on the computer. To
go back to BASIC, you must type in the
command: BASIC. To use COMAL 0.14,
you must first load it from disk. The
x x - Built-in collision detection
x - - STAMP a sprite image onto screen
x - - Animate sprites, interrupt driven
x - - Attach sprite shapes to programs
Graphics
x x - Turtle graphics and X/Y graphics
x x - Hi-res or multicolour graphics
x x - Split screen (text/graphics)
x x - Background/border colour keywords
x x - Mix text and graphics on screen
x - - Graphics text in any size
x - - Graphics text sideways
x - - Save a graphics screen to disk
x - - Window capabilities
x x - Line clipping within frame
x - - ARC and CIRCLE commands
x x - FILL command
x x • PLOT a point
Sound
x • - BELL command
x - - Built-in sound commands
x - - Control sound envelope
x - - Interrupt-driven music
Machine language
xxx Call machine-code routines
x - - Call machine code by name
x - - Link machine code to programs
x • - Parameter passing to ML routines
Miscellaneous
x - - Modem-communications built in
x x - Function keys defined
x - - Function keys alterable by user
x x - Stop key disable/enable
x - - Cursor command
x x - No 'garbage collection'
x - - Joystick/paddle/lightpen keywords
x x - IN (built-in string search)
x - - Store a text screen for later use
x x - Long variable names
x - - Can sense SRQ interrupt
x x - Can change part of a string
x - - Built-in clear screen command
xxx PEEK, POKE, SYS, GOTO
22 Issue 23
fastload version now available loads in
less than 20 seconds, so the wait is not
long.
Disk-based COMAL is a public domain
program. You are allowed to give copies
of COMAL 0.14 to others. All COMAL
0.14 programs can therefore be run on
any Commodore 64 or 128. Just include
the COMAL 0.14 system on the disk with
your programs. COMAL 2.0 programs
will not run without the cartridge: only
people with COMAL 2.0 Cartridges may
run COMAL 2.0 programs.
A program written in COMAL 0.14 can
run under COMAL 2.0. To transfer a
COMAL 0.14 program to 2.0 you must
list the program to disk, then enter it into
2.0. A program that is saved to disk is
tokenized, and COMAL 2.0 and 0.14 use
different tokens.
COMAL 0.14 and 2.0 are similar in
many ways. This is to be expected, since
COMAL is a standardized language. They
both adhere to the COMAL Kernal,
though COMAL 0.14 is missing a couple
things, such as val and str$. The Car-
tridge includes the complete COMAL
Kernal .
One of the main differences is with
graphics and sprites, COMAL 2.0 re-
quires parentheses around parameters
while 0.14 does not. Also, closed pro-
cedures are included in both versions, but
in COMAL 2.0 they are a bit more clos-
ed: you must import any procedure or
function names that you call from within
a closed module.
The COMAL 2.0 Cartridge adds many
enhancements. Remember, it is a 64K
system! Program editing is improved.
Auto and renum are retained from the
0.14 version, but many more features
have been added. A procedure can be
listed by name — no need to remember
what its line numbers are. You can even
have it listed without line numbers using
the display command. COMAL 2.0
automatically lists the COMAL keywords
in upper case and your variable names in
lower case. You may use either upper or
lower case when you type your lines in.
Like a good word processor, the Car-
tridge includes find and change com-
mands. The change is selective: you don't
have to change every occurence of the let-
ters you specify.
Perhaps the fastest way to compare the
two versions of COMAL is with a chart.
The chart of features in the box accom-
panying this article is subdivided by
categories. BASIC is also included on the
chart, even though it lacks most of the
added features. An x in the column means
the feature is included. A - in the column
means it is not included. Q
TPUG PROGRAMMING CONTEST
TPUG is once again offering you the opportunity to reduce the costs
of your hobby. The Librarians Committee of TPUG is sponsoring a
programming contest as a means to encourage you to submit your
programs to the library. The winner of this contest will be selected at
random from the names of the submitters of all programs accepted by
the librarians from the submissions received between the first
publication date of this notice and Friday, October 31, 1986. The
more programs you submit, the greater your chance of winning.
RULES
• Submissions must be received on or before the deadline.
• Submissions must be on diskette (VIC programs may be
submitted on cassette — two copies, please).
• Submissions must be original material.
• Submissions can be for any Commodore machine.
• Submissions should indicate that they are contest
submissions.
• All submissions become the property of TPUG.
• TPUG general policy of returning a disk of your choice on
acceptance remains in effect for all submissions.
• Unaccepted disks will be returned.
• Freeware submissions will not be accepted for contest
consideration.
• Submitter's name must be included in a comment statement
at the start of the program as well as on the front of the disk.
• First, second and third prizes will be awarded consisting of
100, 50, 25 blank disks respectively or 25, 10, 5 disks
(respectively) from the TPUG libraries.
The Librarians Committee
TPUG Magazine 23
Amiga Dispatches
by Tim Grantham
I keep expecting the excitement to die
dawn. But as each new productivity,
game, creativity program for the Amiga
is announced; as each new peripheral is
introduced; as each new company
declares its intention to develop products
for the Amiga, I am amazed anew by the
potential of this machine.
Now come the intriguing rumours of
the next generation of the Amiga, code-
named 'Ranger'. This will apparently be
a 68020-based computer with 1024 by
1024 pixel graphics and complete com-
patibility with all Amiga hardware and
software. There is even speculation that
it will be released this fall, at a cost of
between three and four thousand dollars
(US). C-A (Commodore-Amiga) has an-
nounced a revision of the expansion bus
on the Amiga to accommodate the
Ranger: as I understand it, all future
Amigas will have a 100-pin bus instead
of the current 86-pin bus. C-A is work-
ing with hardware developers to make ex-
isting peripherals upgradable to the new
standard.
Meanwhile, there's lots happening in
the here and now . . .
Software news
Soft Circuits released PCLO, their PCB
CAD program, on April 2. Retailing for
about $1000 (US), it has features superior
to those of similar programs available for
PC clones at twice the price. Upgrades
and additional products to come will in-
clude autorouting, schematic capture, and
circuit simulation . . . Borland has decided
not to develop any products for the
Amiga. Many Amiga owners had eagerly
awaited the appearance of Turbo Pascal.
Ashton-Tate has also declined to port any
of their products, although spokesman
Steve Silverwood has noted that they ivill
be publishing dBASE III on 3.5 inch
disks for the new IBM machines. These
will most likely run on the Amiga under
the Transformer PC emulator. . . It is
rumoured that Microsoft will be adapting
all of their major products to run under
OS-9, which means that these products
will be able to run on all the 68000
machines, including the Amiga, once
TLM Systems has finished porting
OS-9. . . Speaking of operating systems,
there are persistent reports of successful
efforts to port Unix to the Amiga.
Those who have seen the impressive jet
simulator demo program currently
screaming around the public domains will
be interested to know that a release ver-
sion is nearty ready, complete with air-
craft carriers, airports and additional
scenery. . . Mindseape's The Halley Pro-
ject for the Amiga has been published.
Word is that it is a dramatic improvement
on the previous versions, with superb
graphics and sound. I hope to have a
review of this product in next month's
issue ... A hint to players of Arctic Fox:
shoot down the air convertors as quickly
as possible. Besides being worth a lot of
points, destroying them preserves oxy-
gen and gives tank commanders more
time to get to the main fort.
Even more languages are appearing:
CSI is shipping the Amiga version of
Multi-Forth, in hot pursuit of MVP
Forth. . . ABSOFT will be shipping an
Amiga Basic compiler in June/ July for a
measly $295 (US). . . Steve Jusik is port-
ing his MacNosy debugger... The
assembler that comes with the highly-
rated Aztec C compiler does not, unfor-
tunately, produce code that is compatible
with the Amiga Assembler marketed by
C-A. Aztec has promised that such com-
patibility will be part of their first update.
Meanwhile, you can get around the prob-
lem by writing a program to translate the
non-standard 68000 pseudo-ops used by
the Aztec assembler to the standard ones
used by the Amiga Assembler . . .
You may remember that vl.l of the
Amiga OS was written to provide com-
patibility with the 68010 and 68020
upgrade chips to the 68000 CPU. Unfor-
tunately, none of the current math
libraries in the OS, including IEEE and
FFP, support the 68881 math co-
processor chip, though Randy Weiner of
CBM has stated that they can be rewrit-
ten to do so. Randy has also mentioned
that a much-needed upgrade to Text-
Craft is in the works; and that C-A will
soon be marketing FontEditor,
something that will be of great interest
to the many people looking at the
machine as a possible character generator
for broadcast purposes. Randy did not
mention that version 1.0 of Amiga
Assembler was shipped with a couple of
major bugs, first publicly spotted by Jez
San of Argonaut Software in England,
that render the include files useless: first,
the lack of the dos lib.i file, which means
no DOS operations can be carried out; se-
cond, and more important, a major error
in the exec/funcdef.i file, which means
that all Exec functions will be doomed to
failure. San says the fix consists of
locating the line in funcdef.i that reads:
tunc cnt set 4*-6
and changing it to read:
tunc cnt set -30.
The widely -advertised Gizmos package is
getting an excellent response from users.
The fifteen utility programs include a
fine, fast VT100 terminal emulator, that
some say is worth the $50 (US) alone. C-
A's AmigaTerm, bundled with the Amiga
modem, also provides full VT100 emula-
tion. . . Speaking of terminals, a couple
of bugs have finally crawled out of MSS's
Online! terminal program. It seems that
if the capture buffer overflows, it will
truncate the file rather than write the
overflow to the disk. You can cope with
this either by opening the capture buffer
to a size greater than that of the expected
file, or by doing as MSS suggests: setting
the size of the buffer to 1, which will
cause the file to be streamed to disk as
it comes in. Another problem with
Online! is that it does not trap ctrl-n and
ctrl-o. These two characters will switch
the alternate character set in and out,
right when you are trying to read the
message about the ultimate meaning of
life. This can be solved by screening them
out with a look-up table provided in the
program , . . Aegis Development's Im-
ages program will not print with the cor-
rect aspect ratio on the JX-80 and other
printers. Aegis has promised that this will
be fixed in the free-to-owners
upgrades... EA's (Electronic Arts)
Financial Cookbook will not work with
a 680 10 chip installed...
Some encouraging announcements of
music software have been made recently.
Activision will soon be releasing Music
Studio for the Amiga. Features ap-
parently include complete musical nota-
tion on screen, and MIDI capability with
control and scoring of up to 15 channels.
Magnetic Music will be marketing Cherry
Lane's Texture composition tool. In
addition, they have announced a $120
(US) card to connect the Roland
24 Issue 23
MPU-401 MIDI controller to the Amiga;
and a Yamaha DX-7 voice editor/
librarian . . .
Some other products announced . . .
The VIP Lotus-clone is now shipping at
$199 (US). . . SSI Software are working
on an Amiga version of WordPerfect . . .
Charlie Heath has completed TxED and
is selling it for $39.95 (US). . .
E A has finally released an official policy
on copy protection. All of the Deluxe
series of creativity/productivity programs
will use a key -disk protection scheme,
allowing unlimited backups (minus the
key) to microfloppy and hard disk drives.
The key -disk need only be present at boot-
up. A completely unprotected version can
be had for $20 (US) by mailing in the war-
ranty card. Those who bought the pro-
tected backups can obtain an unprotected
version free of charge by mailing in the
protected copy. Although none of this
applies to EA's games, it should pacify
those who were literally organizing a
boycott of EA's products.
Hardware News
Lots of printer information this
month. . . Epson is apparently discontin-
uing their JX-80 colour printer. However,
look out for a colour printer from Canon
for somewhere between $200 and $500
dollars (US), complete with Amiga
printer driver. This machine will
reportedly deliver very high-quality
graphics that can cover the full range of
Amiga colours . . . Redmond Cable is sell-
ing a cable and driver to permit the
Amiga to use the Apple Imagewriter. Call
(206) 868-2168 for details. . . There is
support for the HP Laserjet laser printer
in Preferences, but one can't access the
300 dots-per-inch resolution. Randy
Weiner posted a fix: "You need some way
of reading the specific driver file...
(AmigaBasic works nicely). Read through
the files to byte $0F2E, it should be set
to 0200 (obviously I mean 'word $0F2E').
And, at offset $0F3C should be the word
0300. These offsets represent the settings
for default and letter quality. Use the
following table to set these values as you
desire:
0100: 75 dpi
0200: 100 dpi
0300: 150 dpi
0400: 300 dpi.
That's all there is to it."
Look for a review soon of Comspec
Communications 2 Megagbyte RAM
board for the Amiga. It weighs in at a
hefty $1450 (Cdn.) and is shipping
now... The WCS (Writable Control
Store) is part of the motherboard on new
units, rather than being placed on a
separate daughter board. Some are pro-
posing that EEPROMs (Electronically
Erasable Programmable Read-Only
Memories) be used for the WCS to enable
the machine to boot on power -up without
the Kickstart disk, for such applications
as bulletin boards. The EEPROMs would
still provide the ability to upgrade the
operating system... SoftCircuits has
decided to go ahead with production of
a smalt card that will interface any stan-
dard 40-track or 80-track 5.25 inch disk
drive to the Amiga. It will cost about $50
(US) and be ready on or about May 1. . .
The Futuresound audio digitizer men-
tioned in last month's column sells for
$175 (US), and includes recorder, cables,
microphone, and software. Call (617)
488-3602 for details... A-Squared's
video digitizer LIVE! can now produce
HAM (Hold And Modify) pictures that
can display all 4096 colours available. . .
Micro Forge, the first maker of hard-
drives and expansion boards for the
Amiga, have announced that they will be
supporting the new 100-pin expansion
bus on the Amiga. The new expansion
boards will contain both 86-pin and
100-pin slots, and all other products will
be available in either size. Owners of cur-
rent 86-pin only expansion boards will be
able to obtain upgrade kits. MicroForge
has also announced a tape backup drive
that should be available April 18. For
those who want to supply their own hard
drive, MicroForge will also sell their SCSI
interface card, dual controller, and con-
figuration software separately. Call (404)
688-9464 for more info...
The Transformer
C-A is at last releasing the Transformer
IBM PC emulation software with the
Amiga 5.25 inch disk drive. There are
conflicting reports of its price, with some
dealers selling the disk drive and
Transformer vl.O as a package for
$249.95 (US), while C-A says that the list
price is $399.95 (US), or $299.95 for the
drive and $99.95 for the Transformer.
The program does not allow multitasking,
nor use of those programs that generate
colour graphics. It will run most pro-
grams written for both PCDOS 2.1 and
higher, and most flavours of MSDOS,
though some have reported problems
with MSDOS v2.11. It will operate with
any drive connected to the Amiga, so if
you can get MSDOS software that is
already on 3,5 inch disks, such as those
for the Kaypro 2000, you will be able to
get by without the 5.25 inch disk drive.
(The Transformer does appear to have
problems with the second 40 tracks on the
Data General 3.5 inch disks.) Extensive
beta-testing has shown that most pro-
grams run at between 70% to 85% of PC
speed, except for some telecommunica-
tions programs, which are drastically
slowed. William Harris reports that he
was able to use Copy II PC to copy Lotus
1-2-3 to the Amiga's 3.5 inch drives and
run it without the original disk.
A company called Softeam, Inc. are
promising their own version of the Trans-
former for release the third week of
April. They claim it will provide 100 per
cent compatibility, colour graphics sup-
port, completely free use of AmigaDOS
formatted disks, and multitasking, all for
$70 (US).
Some are claiming to have seen a
demonstration from C-A of the hardware
accelerator for the Transformer. Ap-
parently, this unit will provide 100% emu-
lation, including colour graphics, the
speed of an AT, multitasking with Amgia-
DOS and the ability to address up to 2
Megabytes of additional RAM. It will cost
in the neighbourhood of $100 (US) and
could be available as early as June.
Blits and pieces
Addison -Wesley has delayed the publica-
tion of the complete ROM Kernel
Manuals yet again to June. Others have
leapt into the breach, though the hurry
shows in some of them. The AmigaDOS
Reference Guide from Compute! Books,
for example, repeatedly reverses the
functions of control-0 and control-N in
describing the console device. Likewise,
The Amiga Programmer's Reference
Guide (also from Compute!) devotes a
whole chapter to a new language called
'BACIC. A quick look at both books in-
dicated that, typos aside, they are of
Computel's usual high calibre. Sybex and
Bantam also have published books on
Amiga internals. Look for reviews of
these books in upcoming issues of TPUG
Magazine.
Look for guest appearances of your
favourite computer on Miami Vice.
I'll close with a couple of hints from
Randy Weiner, Amiga engineer at CBM,
West Chester: you can reduce flieker in
interlace mode by using non-contrasting
colours and by viewing the screen under
tungsten rather than fluorescent lights.
Also, there may be some disk glitches
caused by interference from the magnetic
fields of the adjacent 1080 monitor. Try
placing a sheet of aluminum foil between
the monitor and the CPU to act as a
shield. IZ
TPUG Magazine 25
ESCape G 2
by Adam Herst
Without software a computer is just a
door stop (two computers can be put to
use as bookends). This month I'm going
to focus on the software that is slowly
percolating its way into the market, both
for the 128 mode and the CP/M mode.
Software strategies
The only truly innovative aspect of the
C-128 is the inclusion of three distinct
modes of operation, each capable of run-
ning radically different types of software.
The rationale behind this was to provide
a large, established source of software for
the computer on its release.
This end has been achieved admirably.
The C-128 was a productive machine
from the minute the first one rolled off
the assembly line. Software for the 64
and CP/M modes was immediately avail-
able. At the magazine, our C-128 was
pressed into service from day one, runn-
ing word processor, terminal and BBS
programs, and hooked up to all sorts of
standard and non-standard peripherals.
In contrast, the Amiga, while occupying
an exalted place on a desk of its own, is
used only for the occasional download and
the constant display of abstract designs
courtesy of Deluxe Paint. This is not to
belittle the Amiga, one of the most
powerful and promising of persona! com-
puters, but to illustrate the success of
Commodore's C-128 design strategy.
Nonetheless, this success must be
qualified. The 'modular' ability of the
C-128 has created its own problems
related to software: misleading, if not
false, advertising; a dearth of 128-mode
software; and instances where CP/M soft-
ware costs two or three times the C-128
system itself.
As the long awaited upgrade to the
very successful C-64, the C-128 is able to
run all of the C-64 software in its 64
mode. Documented problems appear to
be with 1571 emulation of the 1541 drive,
not with 64 mode itself. This has meant
that the vast quantities of public domain
and commercial programs run as well, if
not better, on the C-128. This has given
rise to an approach to software
marketing which I consider questionable
at best: the common practice of advertis-
ing C-64 software as software for the
C-128. This software runs only in 64
mode on the C- 1 28 and , in the case of car -
tridges, can inhibit the ability to access
the other two modes of operation. This
can only lead to confusion and bad feel-
ings on the part of the user. While it can
be argued that this information is
directed towards the novice user, un-
familiar with computing, I would think
that even the most ignorant of C-128
users knows one thing: the computer can
run C-64 softivare! The designation C-128
software should logically be given only to
programs that run in 128 mode.
If this were to happen, you would see
a substantial reduction in the number of
ads for C-128 software. This is due to the
excruciatingly slow release of dedicated
128-mode software. The reason for this
is purely financial. Early impressions of
the C-128 were that it was merely a 128K
64. Since the installed market of C-64s is
so large, and the 128 can run all 64 soft-
ware, it seemed more economical to
manufacturers to continue writing 64
software, thereby tapping both the C-64
and C-128 markets. Familiarity has bred
respect however, and the power of the
C-128 is being recognized. The advanced
capabilities of the C-128 (80 columns, fast
serial transfer, 2MHz clock speed)
demand new and improved software.
Manufacturers are recognizing this, and
the first generation of 128-mode software
is beginning to appear , with a power and
sophistication unattainable in 64 mode.
The tide is beginning to turn!
This slow development time was not
unforeseen by the designers at Com-
modore. CP/M mode software was sup-
posed to fill this gap with the megabytes
of tried and true CP/M software available
for practically any application. Well-
intended as it was, this idea had a large
ingredient of fantasy. While a large
amount of CP/M software was available
even a few short years ago, the supply is
rapidly drying up. This is not to say that
the CP/M operating system is dead, just
that it receives little commercial support.
What software is available can cost two
or three times the cost of the C-128
system it is to be run on. At last look,
Wordstar Professional was $499 Cana-
dian, and SMan, a popular accounting
package, listed at $1200! While I have
managed to install both programs on the
C-128, their cost will likely prohibit their
widespread use in the Commodore world.
This fact has not escaped manufacturers.
With over 500,000 C-128s sold, and the
number growing all the time, a lucrative
new market now exists for what are prob-
ably discontinued or de-emphasized prod-
ucts. Re-releases of these products at
reduced prices are no doubt at hand.
These observations have led to the
establishment of a TPUG Magazine policy
on reviewing CP/M software. First and
foremost, the program must run on the
C-128. Secondly, we feel that software
priced at over $200 does not reflect the
budget or interests of the average C-128
user, and will not normally be reviewed.
Look for reviews of CP/M products that
do meet these criteria.
Mice-capades
One of the newest peripherals for the
C-128 is the 1350 mouse. A quick glimpse
of this rodent was provided to me by
Computers for Less in Toronto. A dif-
ficult product to evaluate on its own, the
absence of menu-driven C-128 software
made it nearly impossible. Physically
attractive, it is a solid, well-built unit that
is externally identical to the Amiga
mouse, apart from a slightly remodelled
connector. This similarity prompted a
quick try on the Amiga with no success.
The 1350 mouse does work on a C-64,
though. A quick test with Doodle showed
it to be very responsive with a fine
discrimination of movement. Tests with
other programs requiring a joystick also
worked, with varying degrees of success.
It seems, therefore, that the mouse is like
an upside -down trackball, and thus should
even work with a VIC 20! With the right
software, this could be a very nice addi-
tion to your system.
Overdrives
While most people have purchased the
1571 disk drive to use with the 128, the
1541 still functions in all three modes and
can be a useful second drive for backup
purposes. A recent tip travelling around
the BBSs is to access a unique feature of
the 1541 to achieve an increase of about
20 per cent in the data transfer rate. If
you have used a 1541 with a VIC 20, you
are probably aware that issuing the Ul-
command to the disk drive on channel 15
will increase the data transfer speed to
take advantage of the VIC 20's slightly
less finicky timing. This capability can
also be utilized in the fast mode of the
26 Issue 23
C-128, and with a greater gain of speed
than on the VIC.
To implement this on the C-128 a
number of points must be kept in mind.
The 128 mode is faster than the VIC on-
ly in fast mode (when in slow mode it is
slower than the C-64). When fast mode
is activated, the 40 column screen is
blanked. If you do not blank the 40 col-
umn screen, a faster data transfer rate
will only succeed in locking up the system.
To avoid this problem, issue the fast com-
mand at the beginning of the session (and
after any resets) and enjoy a slightly
faster 1541.
This increase in speed can also be ob-
tained in CP/M mode, with a few more
restrictions. The problem is in shutting
off the 40 column screen and issuing the
Ul- command. While it is possible to issue
these commands in 128 mode , then soft-
boot CP/M, the act of booting resets the
40 column screen. This will result in a
lockup when the 1541 is first accessed. If
you are booting off a 1541, the system
will lockup before CP/M is even booted!
Since it is not possible to issue the UI-
command from within CP/M this
precludes using the faster speeds if all
you have is a 1541.
If you are using both a 1541 and a 1571,
however, you can use the faster speed.
From 128 mode issue the UI- command.
Then soft-boot CP/M from 128 mode, and
turn off the 40 column screen with
conf.com (available on TPUG disk (Z)AA)
to avoid locking up the system . This pro-
cedure increases CP/M 1541 access by 23
per cent!
If you are the owner of two 1571s, the
last few paragraphs on 'obsolete' equip-
ment may have seemed irrelevant to you.
Well, you ain't heard nuthin' yet! It seems
that a few C-128s have been relased with
Datasette access problems. A TPUG
member in Minnesota has informed me
that he has gone through three C-128s,
all with the same problem, the most cur-
rent having a serial number CA1846221.
Since that conversation I have tried
Datasettes with three C-128's, all suc-
cessfully. If you have a datasette, give it
a try on your 128. If you are not suc-
cessful, drop me a line with the serial
number of your machine. While this is not
likely to be a major problem for the
majority of users, the 128 was advertised
as working with the Datasette and con-
sequently should do so. Documented evi-
dence to the contrary may produce some
appropriate result from CBM.
Finally, a word for the 1571 owners.
Sensitivity to monitor and TV inter-
ference was a major problem for 1541
users. This has not been alleviated with
the 1571. If anything, the problem seems
to be heightened. A number of users have
reported that the drive must be moved
farther from the offending source when
the computer is in CP/M mode. With
limited desk space, restrictions like that
become a real headache.
Upgrade upgrade
Don't let these complaints give you the
wrong impression, I'm still enamoured
with the machine, and can't keep up with
all the information that is pouring in. Its
almost as hard keeping up with all the
revisions to the CP/M Plus system for the
C-128. It seems that the latest release,
dated Dec. 6, 1985, contains a small bug.
You won't have noticed it unless you are
using a 15257801 or compatible printer.
This bug causes the printer buffer to eat
the last line of text instead of dumping
it to the printer. The release that corrects
this bug is dated Dec. 8, 1985, but has not
been officially released. This, however, is
the version being packed with the new
C-128s.
World of wonders
We end up this month with one of what
I hope will be many puzzles, tips and
discoveries from Jim Butterfield. Jim has
informed us of a mysterious machine-code
routine which magically appears in high
RAM of bank 0. Look for this routine at
address $ffdO to $ffee. This routine ap-
pears on power -up but is not copied from
ROM. Jim's challenge is to identify the
source of this routine. If you think you
can do it, send your response into TPUG
Magazine care of myself. We'll let Jim
pick the correct response since even we
don't know the answer.
That's it for now; stay tuned for more
flashes as they come in. And remember,
'Appreciate your 128!' □
Marketplace
TPUG BBS
The NEW telephone number is:
(416) 273-6300
Operating hours:
24 hours per day
7 days per week
The password is. . .
CONCEPT
COMPUTER RENTALS
We buy, trade, sell and repair
Commodore computers
1541 Alignment
$ 29.00
4040 or 8050 Drive
S 895.00
2031 Drive
S 325.00
Superpet
$ 895.00
Education Software
$ 2.00
Buscard
S 99.00
Paperclip
S 66.00
Consultant
$ 99.00
17 Cedarbank Crescent
Don Mills, Ontario M3B 3A3
Tel: (416) 446-1035
Spain
England
France
Germany
History from the beginning
of civilization for any country,
Europe and the Middle East
$29.95 incl. everything
Disks are fur, 14 blocks open
Attn: World History
(416) 547-3086
273 Britania Ave.
Hamilton, Ontario
L8A 1Y9
C-64, C-1 28/64 Mode
This space
could be
advertising
your product.
Call John Matheson,
(416) 445-4524
TPUG Magazine 27
A Layman's Guide to Burst Mode
by M. Garamszeghy
Copyright © 1986 M. Garamszeghy
Part 1 : Command Summary
The 1571 disk drive is one of the most
versatile mass storage devices available
for Commodore computers. Its disk
operating system (DOS) supports an ex-
tended set of commands that allows the
drive to, among other things, create, read
and write disks in a wide variety of for-
mats with relative ease. The description
of these commands — collectively called
'burst mode' — in the 1571 instruction
manual, is at best cryptic and, in most
cases, downright confusing. This article
is part one in a series designed to
demystify this extremely powerful and
useful set of commands. In this month's
article, I will present a brief description
of the syntax and function of each of the
burst mode commands. In future in-
stalments, I shall examine the operation
and structure of the high-speed data
transfer (burst) protocol used by many of
the burst mode commands.
Many, but not all, of the burst mode
commands have analogous commands in
standard Commodore DOS, Why then is
there a need to duplicate them in burst
mode? The answer is speed. The data
transfer rate of a 1541 drive (or a 1571
in 1541 mode) is about 350 bytes per se-
cond. The 1571 in fast mode is alxiut 1200
bytes per second. With burst mode, data
can be read or written at the blistering
rate of up to 3800 bytes per second! In
addition, burst mode allows you to access
disks formatted in the non-Commodore
industry standard, MFM (maximum (or
modified) frequency modulation) format
as well as Commodore GCR (group cod-
ed recording) format.
Burst mode commands are accessed by
sending a specific set of characters
through the disk command channel, in a
manner similar to the usual Commodore
DOS commands such as n0:, sO:, b-p:.
The first two characters of all burst mode
commands are uO. This allows burst mode
to be accessed by a BASIC statement
beginning with open 15,8>15,*'u0". What
comes next depends on the desired func-
tion and its options. The first additional
character selects the function and,
perhaps, one or two primary options. The
remaining characters select secondary
options.
Before data can be read from, or writ-
ten to, a disk using burst mode, it is
necessary to log in the disk. After logg-
ing in, data can be read or written at will.
If you remove the disk and change it, or
even re-insert the same one, you will have
to re -log the disk. The disk can be logged
in by one of several methods. The
simplest is to use the inquire disk com-
mand . This command will return a single
status byte containing data on the current
disk format and error status. If more
detailed information is required about the
format of the disk (such as number of sec-
tors per track, sector numbering system ,
et cetera), then the query disk format
command should be used. This latter com-
mand can be used to analyse the format
of a specific track on the disk, while in-
quire disk only looks at the first track on
the disk.
Data can be read from the disk by one
of two methods. The first method is the
fast load command. Unlike the other
burst mode commands, fast load acts on
an entire file and will only work on files
stored in normal Commodore DOS GCR
format. The routine will work with either
PRG or SEQ type files. For consistent
performance, the DOS wild card
character should be appended to the
filename being read. (For some quirky
reason ,fast load will not always recognize
a legitimate filename unless it ends with
a * .)The second method, read specific sec-
tor, is similar to the Commodore DOS
Block-Read command. This command
will work with either GCR or MFM disks.
Unlike the DOS Block-Read, the burst
mode command can be used to read more
than one sector at a time. The order in
which multiple sectors are read can be
changed using the set sector interleave
command. (Note that this is not the same
as the sector interleave sub-command of
the utility command.)
The default interleave of 1 corresponds
to contiguous sectors. That is, if you
started at track 10, sector 1 and read 3
sectors, you would read sector 1, then 2,
then 3. If you changed the interleave to
3, you would read sector 1, then 4, then
7. Commodore DOS has, in most cases,
an interleave of 10. C-128 CP/M has an
interleave of 5, while most MFM disks do
not use software interleaves. If you have
ever traced a file through its various
tracks and sectors using the 1541 Display
Track & Sector program, you will see
that in a file occupying consecutively
allocated sectors, the sector numbers
jump by 10 each time. (An exception is
the directory fife, which has an inteleave
of 3.) Similarly , if you note the disk status
display in the lower right corner of the
CP/M screen display, the sector indicator
jumps in increments of 5 each time a new
sector is accessed. Multiple sector block-
reads do not appear to be very useful
unless you know that the data you want
to read occupies consecutive sectors. One
application of this function would be in
a high speed disk copier, where a large
number of sectors are read and then writ-
ten to the corresponding locations on a
new disk. The number of bytes transfer-
red per sector read is equal to the number
of bytes per sector, plus one. Therefore,
129, 257, 513 or 1025 bytes will transfer-
red, depending on the sector size. The
first byte is a status byte, followed by the
data bytes.
Analogous to the read command is the
burst mode write specific sector com-
mand. This allows you to write one or
more sectors to a specific location on a
GCR or an MFM disk. This command,
however, is slightly more complicated
than the read command because both
burst data input and output are required.
The calling program sends one sector of
data, then waits for the drive to return
a status byte. If more than one sector is
to be transferred in sequence, then the
next sector can only be sent once the
status byte from the preceding sector has
been read from the burst data channel .
The 1571 drive is capable of formatting
disks in a variety of different types. The
use of the MFM formatting procedure
was described in a previous article (For-
matting MFM Disks, TPUG Magazine,
March 1986, page 32). Burst mode GCR
formatting does not create a disk direc-
tory or BAM sectors. Its usefulness lies
in the creation of custom disk formats
with unique directory sectors and BAM
(or functionally equivalent indexes). It can
also be used as a high speed formatter for
a disk copying program.
The final set of commands allow you to
change various DOS parameters. These
are not really burst mode commands but,
since they are included in the burst mode
chapter in the 1571 manual, a brief
description is in order. The sector in-
28 Issue 23
Function
Read a specific soctor
MFM disk side or GCR disk (either
side)
MFM disk side 1
Write a specific sector
MFM disk side or GCR disk (either
side)
MFM disk side 1
1571 Burst Mode Commands
Byte Sequence "uO" + chrS() Burst Input
64, track*, sector*, * of sectors
(usually 1)
80. track*, sector*, # of sectors
66, track*, sector*, # of sectors
82, track*, sector*. * ol sectors
Inquire disk: reset drive and log in MFM or GCR disk before a read or write
MFM disk side or GCR disk 4
MFM disk side i
Format disk
MFM single-sided
MFM double rsided
GCR disk double-sided, no directory
or BAM
20
70, 1 29,0,sec!or size (0 = 128
bytes/sector, 1 -256,2 = 512,
3 = 1 024), last track* (default 39), * of
sectors per track, starting track*
(default 0). track offset {default 0), fill
byte (default hex e5)
first byte = 102 then as above
6,0IDbyte*1.IDbyle#2
Set sector interleave (for multisectof read and write)
Set interleave 8. interleave
Read last setting
136
Query disk format: analyze disk lormat (GCR or MFM-sector size, sectors/track)
Side 0, track 10
Side 1, track
Side 0. track n
Side ! , track n
26
138,n
Inquire status: check drive status or load status register
Log in disk with new status 76, new status
Check last stalus
Check if disk was logged
Set utilities
Sector interleave
* of retries on errors
ROM signature analysis
Mode select
Side select
Device * change
Fastload: read an entire GCR file
SEQ file
PRG hie
140
204
62. 83, value
62. 82. value
62.84
62. 77. mode (mode = 48 for 1 541
modeor49for 1571 mode)
62. 72. head (head - 48 for side or
49 for side 1)
62 . dev# (dev* = 4 to 30. normally 8
toll)
159. filename character
bytes. . . +""'
31. filename bytes.
data bytes
data bytes
none
none
none
none
none
none
none
none
none
none
none
none
none
none
Burst Output
for each sector read: one status byte
then data bytes
as above
one slatus byte after each sector
transferred
as above
one status byte
as above
none
last setting
one stalus byte then: nothing else if
GCR disk or unreadable for mat. or
else: another status byte, number of
sectors on track, logical tracks, mm
sector*, max sector*, hard sector
interleave
as above
as above
as above
none
status from last I/O
old status if togged or slatus error
code 13
none
none
disk LED blinks 4 times if analysis
fails
for each seclor read: one stalus byte
then 254 data bytes: for last sector
statjs byte = 31. next byte = number
of bytes left, then rest of data bytes
as above
TPUG Magazine 29
terleave sets the increment by which disk
sectors are filled during normal DOS I/O.
This parameter does not affect the way
a file appears to the user because sectors
in a given file are linked automatically
when the file is accessed.
The ROM signature analysis command
is basically a ROM self test. If the ROM
test fails, the green busy-light will flash
four times.
The mode select is used to select either
1541 (single -sided, slow speed) or 1571
(double-sided, slow or fast speed) mode.
Either mode can be accessed by any Com-
modore machine but only the C-128 can
use the fast serial data transfer. For ex-
ample, you can use the 1571 as a double-
sided drive on a VIC-20 or C-64. The
selected mode remains in effect until
either the drive is reset (hard or soft
method) or a new mode command is
issued. The side select command is an in-
teresting feature. With single-sided disks,
the data are usually stored on side 0. By
selecting side 1 with a single-sided disk
(i.e. 1541 mode), you can format it, read
it, or write to it, thus creating a pseudo
double-sided disk. This is similar to a flip-
py (the process of turning a disk over to
use the second side on a single -sided
drive), except that the flip is electronic
rather than mechanical. It should be
noted that the flip side of a flippy cannot
be read using this method because the
direction of disk rotation changes for a
mechanically flipped disk but not for an
electronically flipped disk.
The final utility command is the device
number change. This is identical to the
1541 command and is self explanatory.
Many of the commands will return a
value called the 'status byte'. A bit by bit
description of this byte is provided in the
1571 disk drive manual. In general, the
low order 4 bits represent the status of
the disk controller. A decimal value of
or 1 for these four bits indicates that
everything is fine. Any other value in-
dicates a controller error as listed in the
1571 manual. The high order 4 bits are
used for MFM disks. If these bits are set
then the disk is MFM format. The bits
represent the number of bytes per sector.
The status can be checked at any time us-
ing the inquire status command .
Table 1 is a summary of each of the
burst mode commands along with the
byte sequence required to access it. All
byte values are in decimal. If these com-
mands are sent using a BASIC command
string in an open or print# statement,
the sequence should be sent as
"uO" + chr$(a) + chr$(b) + chrS(c) . . .
where a, b and c are the byte values listed
in the table. Similarly, for machine
language calls, the listed byte values
should be preceded by the values 85, 48
(decimal) or 55, 30 (hex). It should be
noted that error cheeking is not per-
formed on any of the parameters before
they are passed to the 1571. This must
be done by the calling program before the
bytes are sent. Where no burst data in-
put oi- output are requested , the function
can be called entirely from BASIC.
Some of the command bytes have been
simplified by selecting the most freqent-
ly used options. Other options may be
available for some of the commands. A
detailed bit by bit description of each com-
mand string can be found in the 1571
manual.
The burst transfer protocol is really
quite simple. However, it cannot be used
with a simple GET#, INPUT*, or PRINT*
statement from within BASIC. Data are
transferred directly to and from the data
registers of the serial bus controller (CIA
#1). The process is entirely under user
control (i.e. fully manual) and in all cases
is handled on a byte-by-byte basis . □
THE J
COCKROACH A
TURBO-ROM J
A plug-in replacement ROM for the 64, 128 anc
SX64
. Fast LOAD, SAVE, VERIFY, FORMAT
• Innocent SAVE with REPLACE
• Screen dump during execution
• DOS Wedge:
disk status; non-destructive directory with wild
cards; scratch, rename, initialize, validate; clear
directory and free BAM; change disk device
number; @P/@: open 4,4:cmd4/print #4:
close4; load with SHIFT/RUN-STOP; cold
start, unnew; compatible with VIC switch
(LOGO loads in 35 sees); has no tape or RS232
routines but don't worry; you get two ROMS ir
one - TURBO plus original kernal - toggle
between them
$60. CDN. $45 U.S.
Cheque, money order, VISA or MASTERCARD
kobetek systems limited
Jtfm^. 1007 Commercial Street
m ^F New Mlnas, N.S. B4N 3C4
MAxJ (902) 678-9800
LEROY'S CHEATSHEET
^> /M ^ ■_■__■■-; ^^ \
COMMODORE 128
KEYBOARD OVERLAYS
DIE-CUT — PLASTIC LAMINATED
Forget about constancy referring back to the manual for operating commands.
Discover all the "special'" commands buried in fhe manuals.
LEROY'S CHEATSHEETS' are sturdy plastic laminated help sheets designed for
use with popular software, hardware and languages (or the C128 computer.
Commands are grouped together lor logical use. You learn and use your
programs faster and easier.
FREE K
WITH EACH O
only
$795
each
□ BASIC 7.0
D BLANKS ; = E7 OF j,
DDISK 1571
Deasy script
d fleet system 243
d paper clip 128
d wordpro 128
EYBOARD EXTENDER
RDER (A $2.95 VALUE)
A^
nrv XS7.95- S
„ SHIPPING $ 1.00*
U S & CANADA SI 00 6% TAX
CHECK MO.MC'YISA TiOTAl £
MC/VISA«
FXPIRATION DATF
NAME
ADDRESS
r.lTY
STATE, ZIP
MM CHEATSHEET PRODUCTS INC
P.O. Bo« 111360 Pgh„ Pa. 15238
^^^ (412)781-1551
m
Calendar of TPUG Events
Meeting Places
Brampton Chapter; Brampton Public Library, Four Corners
Branch, 65 Queen St., on the second Thursday of the month,
at 7:30 pm.
Business Chapter: TPUG Office, 101 Duncan Milt Rd., Suite
G-7, Don Mills, on the second Wednesday of the month, at 7:30
pm.
Central Chapter: The Central Chapter will no longer be
meeting.
COMAL Chapter: York Public Library, 1745 Eglinton Ave. W.
(just east of Dufferin) on the fourth Thursday of the month, at
7:30 pm in the Story Hour Room (adjacent to the auditorium).
Commodore 128 Chapter:York Public Library, 1745 Eglinton
Ave. W. (just east of Dufferin), on the first Wednesday of the
month, at 7:30 pm in the Story Hour Room.
Commodore 64 Chapter: York Mills CI, 490 York Mills Rd. (east
of Bayview) on the last Monday of May, and the second Mon-
day of June, at 7:30 pm in the cafetorium.
Communications Chapter: TPUG Office, 101 Duncan Mill Rd.,
Suite G-7, Don Mills, on the fourth Wednesday of the month,
at 7:30 pm.
Eastside Chapter: Dunbarton High School (go north on Whites
Rd. from the traffic lights at Highway 2 and Whites Rd. to next
traffic lights; turn left to parking lots) on the first Monday of
MAY
MON
TUES
WED
THURS
1
5
Eastside
6
VIC 20
7
C-128
8
Brampton
12
13
Hardware
14
Business
15
Westside/Amiga
19
20
New Users
21
SuperPET
22
COMAL
26
Commodore 64
27
28
Communications
29
the month, at 7:30 pm.
Hardware Chapter: TPUG Office, 101 Duncan Mill Rd., Suite
G-7, Don Mills, on the second Tuesday of the month, at 7:30 pm.
New Users Chapter: TPUG Office, 101 Duncan Mill Rd., Suite
G-7, Don Mills, on the third Tuesday of May, and the third Mon-
day of June, at 7:30 pm.
SuperPET Chapter: York University, Petrie Science Building
(check in room 340). Use north door of Petrie to access building.
On the third Wednesday of the month, at 7:30 pm.
VIC 20 Chapter: York Public Library, 1745 Eglinton Ave. W.
(just east of Dufferin), on the first Tuesday of the month, at 7:30
pm in the auditorium.
Westside Chapter: Clarkson Secondary School, Bromsgrove
just east of Winston Churchill Blvd., on the third Thursday of
the month, at 7:30 pm.
TPUG makes every effort to ensure that meetings take place when
and where scheduled. However, unforeseen problems may occa-
sionally arise that lead to a particular meeting being changed
or cancelled. The TPUG meetings line (U5-9040) is the best source
of fully up-to-date information on meeting times, and should be
consulted.
Are you interested in organizing some other interest group in
the Greater Toronto area? Please let the club office know, by mail,
phone or TPUG bulletin board. □
JUNE
MON
TUES
WED
THURS
2
Eastside
3
VIC 20
4
C-128
5
9
Commodore 64
10
11
Business
12
Brampton
16
New Users
17
18
SuperPET
19
Westside/Amiga
23
24
25
Communications
26
COMAL
30
TPUG Magazine 31
/
A Super-OS/9 Bug Report
by Avygdor Moise
Most of the information in this article was
derived from a longer list of bugs that
was mailed to TPUG by Microware. On
the original list, Microware reports pro-
blems not only with OS-9 Level I, but also
all the known problems with OS-9 Level
II for the 6809 micro processor, OS68K
(OS-9 for the 68000, 68010 and 68020
processors) and the development
package.
In addition, users of Super-OS/9 (OS-9
Level I on the Super PET) have reported
more bugs, some of which exist in the
OS-9 operating system itself, and some
of which were introduced when TPUG
ported OS-9 onto the SuperPET.
An attempt to fix all known bugs has
been made, where possible. We hope that
our next release of OS-9 (Version 2.0), ex-
pected early in the summer, will resolve
most of the problems. An announcement
will be made in the magazine as soon as
Version 2.0 is available. The disk will be
available to all Super-OS/9 users on re-
quest, at a charge not exceeding twice the
cost of a regular library disk.
Some of the bugs in the following list
have already been corrected. These are
marked with an asterisk, and are accom-
panied by a short explanation of the cause
of the bug, and a description of the fix.
The follounng section lists bugs reported
for OS-9 Level 1, V 1.2 for 6809 operating
systems. It is condensed from a list pro-
vided by Microware, and. dated January
17, 1986.
OS-9 System
Programmer's Manual
• The descriptions of the D and X
registers are reversed for the F$AllBit
system call.
• The F$A11RAM function has an output:
D = Beginning RAM block number. Page
12-3 states that there is no output.
User's Manual
• The documentation for the Proc utility
is wrong. Proc does not list age, status
or signals.
OS9P1
• F$Fork call: When the I$Dup system
call (called by FSFork) fails, it may crash
the system, because F$Fork uses the B
register as a counter, and that register
gets an error code back from I$Dup.
OS9P2
• F$Unlink call (*): The Unlink
subroutine has a bug that causes
I$Detach not to work. This is because the
X and Y registers have inverted values
(they need to be exchanged). This causes
a problem in IOMan. When 1$ is passed
an invalid pointer, no error is returned.
CMDS
DSave
• The DSave utility does not maintain the
attributes or owner number of a direc-
tory. This is not a bug, but you should be
aware of it.
Link
• Trailing spaces in the parameter list
causes an error 235 to be returned. This
may be a problem with F$PrsNam.
However, this is not a problem with Level
I, so it does not directly affect Super-OS/9
users.
Login
• After a user logs in, if a ctrl-a is hit im-
mediately, the password is displayed.
This is a potential security problem.
Login, TSMon
• The current data directory must con-
tain the sys directory in order for login
to be able to find the password file. In
order to ensure that the tsnton command
succeeds, the user must issue a chd com-
mand to the directory containing
sys/password.
Shell
• The Shell gets confused when certain
characteers are used in command
arguments:
format /dx <options> "What Luck!"
format /dx <options> "Ball & Crane"
The "!" and "&" inside the quotes in
these commands are interpreted by the
Shell as the pipe and the background task
characters respectively. This is not real-
ly a bug, since the Shell is not designed
to recognize double quote (") as string
delimiter.
Basic09 (User's Manual)
• The int function description is incor-
rect. The documentation states that the
function returns the next smallest whole
number, but int(-2,l) returns -2 instead
of -3.
• The syntax definition for the renumber
command is incorrect. The ",<incr>" is
optional only if the beginning line number
is present. This means that the syntax
should be:
r[*] [<begline#> [,<incr>] ] <cr>
• The examples for the print using state-
ment do not work. In particular:
print using "rt.l", "9999999" pro-
duces an error;
print using "el2.3", 1234.567
generates 1.235E+03;
print using "el2.6>", -0.001234
generates **********•*.
Microware C (Manual)
• In the index, it claims that there is a
toascii function on page 4-32. This func-
tion, however, is not documented in the
manual .
• The first paragraph of page 1-2 states
that a copy of Kernighan and Ritchie's
The C Programming Language comes
with each copy of the C compiler. This is
not true.
Microware C (Compiler)
• The source line if ((fred & Oxff) = =
0), where fred is an integer, results in the
assembly code:
ldd 4,s
clra
lbne 7
which, of course, never branches.
TPUG Bug Report
The following section lists bugs reported
by Super-OSf9 users. These bugs should
be fixed in Version 2.0.
Drivers
ACIA*
• When the receive buffer gets full,
Super-OS/9 will hang.
This problem has been resolved by setting
the interrupt priority of the ACIA to be
lower than that of the console, thus allow-
32 Issue 23
ing the console to function even when the
ACIAis not in use, or when its input buf-
fer overflows, and there is no reader.
In simpler terms, when a character ap-
pears in the serial port, an interrupt is
triggered. If there is no program reading
it (like XCom9), or the program accepting
the data from the ACIA is too slow to
read the data, an alarm clock is per-
manently set until a process realizes that
one or more bytes are waiting to be read
from the port. This alarm may consume
all of the CPU time if it has too high a
priority. By lowering the alarm priority
to be the lowest in the system, the inter-
rupt would be serviced i f and on ly if there
is a program reading the data and the
system console (/term) is not busy.
This has not yet been implemented at the
user level. Those of you who have ac-
quired the extended source code package
will find a conditional directive in the
'acia.irq' module that allows the user to
enable or disable MODEM control on the
ACIA port.
• It is not possible to disable MODEM
control (CTS/RTS/DCD) in this version.
The symptom is that your computer will
appear to lock up if your modem is not
turned on, or is improperly connected.
• It is not possible (from the driver level)
to generate a BREAK signal.
This will be added in release 2.0
CbmDsk *
• A disk drive must be accessed at least
once before formatting it or writing to it.
This applies to /d0, til, /d2, ?dS and
/dram.
In the 'init' subroutine, the X and U
registers were not used correctly.
• Task switching is not allowed during
disk accesses.
This will be taken care of by the use of
a disk cache (that we have found to im-
prove the disk access by up 20 times) and
by possibly letting the IEEE-488
handlers be interrupt-driven (yes, it im-
possible on the SuperPET).
CbmCon *
• When the Shell is idle, pressing ctrl-c
or ctrl-e will echo "Error 252" and "Er-
ror 253" instead of "Error 3" (keyboard
abort) and "Error 5" (Quit), respectively.
In the 'read' subroutine, register B was
used in the set carry instruction instead
of register A. Register B normally holds
the error number.
• When input is expected by any utility,
pressing the rubout (repeat) key will
make the cursor vanish.
The terminal driver does not treat the
rubout characer as a NOP. In 2.0. rubout
will be displayed as a reverse character
(Greek letter mu).
• Right after Super-OS/9 boots, two cur-
sors are visible on the screen.
This is a feature, not a bug.
• There is no way, in this version, to
generate the special block graphic
characters on CbmCon.
By adding a learn function to CbmCon,
the above problem will be resolved in ver-
sion 2.
• There is no facility for reading screen
status information (like window size, cur-
sor position and character under cursor).
Save Cursor and Select Window func-
tions will be added to Version 2.
If you have any problems or bugs, or just
wish to express an opinion, please write
to me in care of TPUG (address is listed
in the magazine), and I will be happy to
answer. (Better yet, why not attend the
SuperPET monthly meetings at York
university and get the answers first
hand.) If the questions relate to matters
that may concern the membership at
large, I will reply to them in this
magazine. D
Super-OS/9* Is Here
TPUG has implemented the popular 6809 operating
system OS-9* on the SuperPET. Super-OS/9 greatly
expands the software availability and the hardware
i capability of the SuperPET while preserv ing access
to the Waterloo languages and programs.
The cost of Super-OS/9 to club members is $210
(Cdn) (plus $10 shipment/handling Ontario residents
add 7% PST), which includes the cost of a hardware
modification that will not affect the normal operation
of your SuperPET, installation instructions and the
operating system disks.
To obtain your copy please send your cheque or
money order to:
TPUG
101 Duncan Mill Rd., Suite G-7
Don Mills, Ontario
Canada M3B 1Z3
What does Super-OS/9 offer?
• A true disk operating system with features found on
UNIX* systems and on the AMIGA.
• Multi-tasking and multi-user capability.
• Hierarchical directory structure with time/date stamps.
• Programmable file access privileges for increased
security.
. : Extensive software is available for OS-9, most
of which runs on Super-OS/9.
Super-OS/9 VI. 1 includes an assembler, editor,
symbolic debugger, communication software and ter-
minal emulation package. Available languages include
BAS1C09, CIS COBOL, Fortran 77, Pascal, Lisp, C
and others. Application software include wordproees-
sors, spelling checkers, data bases and spread sheet
programs.
TPUG has acquired public domain software and
will assist users in the conversion of commercial soft-
ware to Commodore format.
Portability and Expandability
• Super-OS/9 programs will run on all OS-9 based
computers (like the CoCo).
• Super-OS/9 will support standard disk drives (IBM
format) and the Hi-res graphics board (700 x 300 dots).
• Super-OS/9 software is C compatible with OS-9 68k
and AT&T Unix system V.
For further information call TPUG Inc. at
(416)445-4524, ask for Bruce.
NOTE: If you own a 3 board SuperPET and wish to
acquire Super-OS/9, please call TPUG before, order-
ing Super-OS '9, for info about a hardware fix to a
design error in your SuperPET computer.
Super-OS/9 is a trade mark oi TPUG and Avygdor Moise.
OS-9 is a trademark of Microware and Motorola.
UNIX is .i trade mark of Hell Laboratories.
Tele-Communications
Package
A complete package for several uses. One disk includes
64 Swifterm, 128 Swifterm and the War Games auto
dialer. Three packages all for the price of one!
*19
SPECIALS
Disk notcher $5.99
Double your dish capacity wins this tittle tool
Generic Disks OS/DO 79C
300 Baud Modems with Swifterm and Quantum Link $39.95
128 80-COLUMN ADAPTER
A riual purpose adapter that gives you BO -columns of monochrome tent in (he 138 mode A
switch is provided to toggle between 40 and SO mode Both sound and video Cables are
included for a compteto hook-up
$19
95
64-128 CROSS REFERENCE BOOK
This is the first boofc available ol its fcind- Complete cross -references used !o covert 64
programs over to the 128 computer. Book is formated on the (efl side with the Socalion and
label name, and then on the right with the equitvent 128 location. The entire range ol memory
is covered starting at 0-Page going thru BASIC and Ihen thru the Operating System. A must
for the serious 12S user <£ -i ar%QC
$12'
MAGNUM LOAD
Programed by Jim Dmvt
MAGNUM LOAD is a new replacement KERNAL (.operating system) ROM chip for your Con>
modor 65 or 128 computer lhat will toad and verify programs up to 6 limes laster than before
The lape routines have been removed from the old chip and In their place have been pul a
highspeed loader, highspeed verify, and disk driver no-head-ratUe routine. Unlike the older
cartridge fast loaders, no ports are tied up a! the rear of the compuier. the screen is not
bfanked during loading and there is no wear-aod-tear on the expansion port. For maximum
convenience and performance, the chtpis instated directly in the circuit board Generally a
socket has already been provided to make the operation easy, but occasionally some solder
mg may be required Now you can give your 154 1 disk drive "157 1 speed "
Rather than gwe you more exagefaled claims about how many limes lasler our ROM chip is
compared to the slower cartridge versions, a comparison chari is supplied hstrng
MEASURED loading limes.
Star-
Dos
Reg-
Load
Program
Pitsloptl 144 sec
Music Shop *> 105 sec
Hitchhiker's Guide to the Galaxy... . ? 70 sec
On-held football ? 149 sec
EASY FINANCE I .. 7 58 sec
S2495
For 1541 or MSD Version
* Wi! I not last load - detauited back to reg utar load
Much
S
43 sec.
105 sec."
70 sec "
66 sec
13 sec.
Fail
Load
41 sec
105-
NG "
63 sec
13 sec.
MAGNUM
LOAD
31 sac.
21 sec.
Msec.
56 sec.
It sec.
•Failed io load a! all
A Disk ■ A 2nd drive Imuietor (of the Amega S49.95
A- Filar - A complete File PRG (or the Amega S49.95
A Report - A complete Report Writer for the Wmega . ...... 349.95
A Term - Excellent, easy to read terminal package for
the Amega s « 95
DCODER
• Translates any machine language program inio easy to-read English descriptions wild
complete explanations or each command.
• Makes complete notations ol all important memory jeeahons accessed by ihe program
ISID. VIC. MOS. KERNAL. etc.!
• Gives you three ways ot accessing programs:
1. Will read and list programs Irom DISK
2. Will read and liil programs Irom MEMORY
3. Direct user Input (Irom maoazlnal, ate.)
• Can be used to locale and examine any machine language program's protection
routines?
• Can be used to easily break apari machine language programs tor study and
examination'
• Printer option lor complele hard copy listings' $^ QflB
You no longer need to be an EGGHEAD to read Machine Language. I W
N-CODER
THE PERFECT COMPANION PROGRAM TO DCODER!
Allows you lo easily make changes in machine language programs . . . right on the disk!
• ftevmte ability allows code lo be altered and then rewritten directly lo the disk'
• Features sector by sector scrolling assembly language display ot machine language
programs'
• Noianon ol ASCII text equivalents lor easy spoiling ot embedded text strings
• Handy reterence display ol all assembly language commands and then ML numerical
equivalents!
• Byte spinier lor easy splitting ol decimal SH Q95
addresses into low byte high byte formal 1 I V
64 BBS
Full performance boards with lots of extra's not found on others Both boards have message
rooms mat can be seiup for a variety of different uses. Each room can have it's own access
level assigned for maximum control
• 7 read and write rooms with up to S
secur ity levels
• Public message base and sysop's mail
box
• Secrel highest level to* complete aiccess
of all functions
• Auto cyclmg of E-mail
* Remote access for system operator.
Boards activity can be sent to printer
* 30Q'i200 baud selectable
* Up and down file transfers with a choice
o> access levels
* New punter and X'modem protocol sup-
ported
128 BBS
$ 39
95
This is the first complete 128 bulletin board ol >l s kind AM the features ol the 64 board and
more The board takes advantage of the extra memory by providing a complete seperaie
sub-board User can have both boards available at the same time Imagine running an open
board lor everyone a secret closed board lor the more serious users Look at these features
* Print Out boards activity to include what
files accessed and by who.
* Faster performance and more storage
using trie t57i drives
* Supports the use of over 500 users'
• Both boards will support and work on any
type of aisk drive including the big 1 mea
SFDS $39 95
Both modems work on the 1650, 1670 and their compatibles
DIR +
A DISK LIBRARY CATALOGING PROGRAM
Having problems finding lhat lost disk'* Here's a program that allows you lo alphabetize and
print out your program names In a versatile format A scrolling arrow allows you to edit out
meaningless names and keep what you want Know whBt you got and where Ms at 1
• 60 to 600 titles (1 to 5 COLUMNS) can be printed per page by using optional condensed
printing.
* Print disk labels with yoyr disk names and tD's * - /\QC
• Can support up lo 1100 program titles and can O N I Y I ?T
alphabetize in less than 15 seconds'
* Save trie master list to disk lor use with a word processor or a data base
Dealer and Distributor Inquiries Invited
Enclose Cashiers Check. Money Order or
Personal Check Allow 14 days for delivery
2 to 7 days for phone orders. Canada orders
must be in US Goiters VISA - MASTER
CARD - CO D
Programs for C-84/12B l 3 00 S A H on all orders
Software Submissions invited
MegaSoft
MegaSoft Canada LTD.
P.O. Box 10
Parry Sound, Ontario, Canada
Phone 705-746-8081
In USA call 800-541-1541
Tele* 4949909 MEG AS
Limited
Top Secret Stuff 1 & Top Secret Stuff II
Programed by Jim Drew
Are both collections ol 20 programs per diskette (that works out to about 50C per program')
that help you explore and enhance your Comodore64 and/oi 12a and 1541 disk drive. Now
you can unlock many secrets formeily known only to top machine language programmers by
using these sophisiicaied 'tools " II you have ever been curious about the inner workings ol
your computer system, now is your chance to dig m and lind answers with the help ol these
programs These collections ol progams have gotten rave reviews from actual users, and we
are sure that you. loo. will be pleased.
Both for only $ 19 95
TOOLBOX 64 AND NEW TOOLBOX 128
Side I contains over 100 routines, someol them are lor protection, smooth scrolling, modem
routines and sound and color. Also a bootmaker, paddle and joystick test; read terminal, and
auto dial and auto answer Documented routines allow you 10 use them to builrj your own
programs or use alone. This disk has a lot ol tricks thai are used in commerce! sotlware.
Side ^contains several of the same routines for the 128 system but also a T&S editor (or going
Out to track 66, along with a screen dump for the 60 calum mode and lots, lots more
GRAPHIC LABEL MAKER
Give your labels the professional louch With Hi Re? Graphics make your own design or use
one out 60 premade labels with easy to use on scteen editor You can insert up to three lines
of tex! then choose the picture you want lo put on the lolt nana side of the label Then you
can print oul as many labels as you want This has got to be the neatest label piogram oul
I here.
c* ::':::■:
far ::;-•;„'.
: t1
"No.;- works vtith Pnnt Shop
M -,-■■.:■
$2495
Side 1 C-64
Side 2 128
All for
*19
95
Turtle Graphics II
Bravo
Maze Master
Lazer Zone
Turtle Toyland Jr.
Gridrunner II
Pitfall
While Supplies Last!
$995
Minnesota Fats
Frogger
Q-Bert
Popeye
Quality Joy Stick
Rootin Tootin
PHOTOCOPY
PHOTOCOPY is a graphics integration program which lets you
create NEWSROOM photos and banners from other graphics
programs. Files also can be converted from NEWSROOM to
PR INTSHOP. Photocopy is an idea enhancement to NEWSROOM
giving you the versatility to increase your graphics library.
• Photocopy will convert NEWSROOM photos lo PAINTSHOP
• Phtocopy works with a variety ol files "DOODLE. FLEXIDRAW. PAINTSHOP. SCREEN MAGIC
GRAPHICS BASSC. COMPUTER-EYES".
• Photocopy will converl a NEWSROOM pholo or banner to a PAINTSHOP graphrc.
• Photocopy works with Ihe 1541. 1571 and the Indus drives.
$ 19
95
Your Choice
Each
Newsroom, Doodle. Printship, Flexidraw, and Graphics Basic are trademarks of Springboard
Software, City Software. Broderbund Soltware. Inkwell Systems, and Hesware respectively.
We'll Send You Money!
That's right — TPUG Inc. will send you — with NO
obligation (on our part) — hard cash that you can spend
as you please. You don't even have to be a TPUG member!
Hard to believe? It's true!
Here's how to take advantage of this special offer;
Just send us a self-addressed stamped envelope, along
with an original unpublished article suitable for TPUG
Magazine. The topic doesn't matter — just make sure that
it relates to Commodore computers, and that it's brilliant
We do the rest.
Your article should be on a Commodore disk, preferably
with accompanying hard copy. Sequential PETASCII files
are best, with no embedded word processor commands,
but other formats are acceptable. Just be sure to state both
disk format and word processor used on the label of the
disk, along with your name and the filename of the article.
We'll get back to you as soon as possible, usually within
three weeks of receiving your submission.
By the way, if you have an idea for an article, but you're
not sure whether it's suitable for TPUG Magazine, check it
out with us first. Just call (416) 445-4524 (9 to 5 EST
weekdays), or drop us a line at: Submissions Department,
TPUG Magazine, 101 Duncan Mill Road, Suite G-7, Don
Mills, Ontario, Canada M3B 1Z3.
And remember, if we print your article — we'll send you
money!
"Cecil's 6502/6510 Conditional Macro Assembler"
and "Assembly Language Source Code Editor"
for Commodore 64® or Commodore 128®
or Commodore SX64®
A package of programming tools on one S'i DISK created for every
assembly language programmer.
Fully capable (or the professional: "'Cecil's Assembler' always EVALU-
ATES THE WHOLE EXPRESSION. THEN RETURNS THE CORRECT
HIGH/LOW byte".
Cecil's Editor provides easy access io extensive on-line help screens lora
variety of information about Ihts assembler package. On-line help de-
scribes the assembler syntax, pseudo-ops and macro instructions, and
the editor commands.
• Features 10 buttl-m macro instructions to complete the branch or
lump on condition instruction sets
■ Labels may be up to 13 characters in length All 13 characters are
considered significant .
• Includes lull-screen edilor with enhanced DOS commands.
• Nests macros to 32 deep.
• Includes 10 pseudo-ops to control Ihe assembly process
• Slops on error and i or identities error type and location.
• Supports most printers and interlaces and allows multiple disk
drives.
• Prints its own instruction manual.
ONLY '49.95 Cdn. or '34.95 U.S. by Check, Money Order,
Visa or MasterCard to:
NORTH OHIO FIRMWARE
Box 2661
North Canton, Ohio 44720-0661
( ) English ( ( C64-
( (German ( ) C128" in C64- Mode
( ) French ( ) SX64
( ) Information $1.71 Cdn. S100U.S
Or Call 216/4S7-0736 Irom 9:00 a.m. to 1 1:00 p.m. EST.
Commodore 64' . Commodore 128' and Commodore SX64' are registered
trademarks of Commodore Business Machines.
Library Additions
CP/M Disk <Z)AC
Presented by Adam Herst
Only one disk to report on this month but,
given the panicky calls I've been getting,
a little information concerning the use of
CP/M disks is in order.
CP/M disks must be used in CP/M
mode. While a directory of sorts can be
pulled from a CP/M disk in 128 mode, it
indicates that there are no files on the
disk with blocks free. If you get a disk
you think has no files on it, try accessing
it in CP/M mode.
In CP/M mode, the commands with
which you are familiar from BASIC do
not work. You cannot use load, save, list
or run with CP/M programs. To pull a
directory from a CP/M disk you must use
the dir command (try the f3 key). To run
a CP/M program, you merely type its
name at the prompt. If this file is a .com
file it will be loaded and automatically
begin execution.
Since there is no list command, the for-
mat of the standard TPUG list.me file
has been slightly modified. These files are
now called type.me files, because CP/M
does possess a built-in type command. To
view the type.me file enter type
???/type.me at the prompt.
On this month's disk are a number of
utility programs donated by TPUG
member Ora Flaningam. D, SD and ZX
are all directory programs that are
smaller and faster than DIR. ZX comes
in a .lbr file, and can be extracted using
the library utilities on this disk. DU is a
disk track and sector editor. Designed for
a Kaypro disk, it should work on C-128
disks. Documentation is in DU-V83.DOC.
SZP is another disk editor.
LDIR, LRUN, LU, LUX, LUXDIR,
LUXTYP are all utilities for
manipulating library files. LU300.DOC
should tell you everything you want to
know about library files, SQ and USQ are
recent versions of the Squeeze and Un-
squeeze utilities with copious document-
ation. Starting in the near future, pro-
grams on TPUG CP/M disks will be dis-
tributed as squeezed library files to save
on limited disk space.
NSWP is a more recent version of the
SWP file copy utility. Documentation
provided in NSWP.DOC. MFT is a high-
speed, single-drive file copier. This one is
very useful!
Finally, VDO is a good, Wordstar-like
word processor and text editor.
Documentation is provided through
online help menus and many of the Word-
star commands are honoured.
Next month should see the release of
a number of public domain languages for
CP/M. Remember to send us any public
domain programs you may have. In
return we will send you a disk of your
choice for each one we receive and use.
zac/type me
du-v83 doc
library lbr
1 u com
lux com
luxtyp com
mft doc
nswp142 doc
sq/usq doc
szp doc
usq doc
vdo doc
du
ldir
lrun
l.i300
luxdir
mft
nswp
sq
szp
usq
vdo
zx
com
cam
com
doc
com
com
com
com
com
com
com
lbr
SuperPET Disk (S)TZ
Presented by Bill Dutfield
Finally, to complete the additions to the
SuperPET Library , a SuperPET disk was
released in December. This disk, con-
tributed by Alain Proux, contains a
tutorial on writing math functions in 6809
assembler. There are nine modules, sup-
ported by three demonstration programs,
covering: accumulators and registers, In-
tegers (2 modules), floating point
routines, first steps in FP arithmetic, out-
put formatting, advanced inputting, in-
put and output operations and comments
on demo programs .
3
7
35
superpet disk (s)tz
"describe .dec/85" seq
"-maths with the-" seq
" assembler " seq
» ! » geq
"--editor files--" seq
•• a « seq
"--introduction--" seq
"matBie" seq
" tutorials " seq
"matlie" seq
37
18
44
26
52
56
36
36
1
1
1
14
1
1
20
1
1
14
14
40
38
14
25
10
I
1
1
2
3
20
1
mat2:e"
mat3: e"
mnt4:e"
mat5:e"
ma t6: e"
mat7:e"
mat8:e"
mat9:e"
--source code-
integers-
integers. asm"
integers . cmd"
storage
storage . asm"
storage . cmd"
demo
mai n . asm"
'rout i ties . asm"
input . asm"
'display. asm"
'format: ng. asm"
sa ve . a sm"
'variables. asm"
'demo .cmd"
-main menu prg
integers :men"
storage :men"
'demo :men"
'sample data fi
'samp le : dd"
le'
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
seq
prg
prg
Prg
seq
seq
seq
C-128 DISK (Y)AB
Presented by James Kokkinen
If you have developed C-128 programs for
the public domain that you feel are worth
sharing with TPUG's membership, we
are anxious to review them for possible
inclusion in future monthly or specialty
disks. Programs that include documenta-
tion on disk are preferred.
This is the second disk entered into the
TPUG C-128 library for operation in
C-128 Mode. It contains some examples
of the types of programs that can be
developed on this computer in both
BASIC 2.0 and BASIC 7.0. This disk con-
tains four games, all educational, a col-
lection of clever sayings and a wealth of
well-documented utilities for reading, for-
36 Issue 23
matting, programming, and booting your
programs in C-128 mode for both BASIC
and CP/M formats as applicable.
It is always advisable to back up the
programs you use from these disks onto
disks formatted on your own equipment
prior to running them.
We open with Number Invaders, an
educational math game for players of all
ages. You set the level of difficulty, give
your name, and the game keeps track for
you, providing rewards for exceeding
your previous score. Scores-Num.I and
Racecar4.spr are sub-programs of this
game.
Factor Race.y is a more advanced
math game adapted from the C-64 library
to run on both 40 and 80 column screens.
Geography .y, and Definition.y are both
word games including documentation to
provide hours of educational fun. Prover-
bial.y is a collection of short sayings,
quotations, and anecdotes. It is best view-
ed on the 40 column screen.
Moving on to utilities, we have
Filecon.y and its partner Filecon.ml,
which can be used to convert BASIC text
files to CP/M text files and vice versa.
Filecon.ins is a sequential documentation
file for Filecon.y. IBM-Filecon-lst is a
short program you can type to an IBM
formatted diskette to perform similar
conversions on IBM PCs. IBM-Filecon-
ins tells you how. Autobootmaker2.y is
what its title implies, with documentation
as to its use in Autoboot.ins.
Hi-Res Text.y allows bit mapping of
oversize text on graphics screens. This is
for use within other programs, and may
require operator adjustments in order to
achieve the desired results. Hi-Res. ins
explains.
Mergekey setup.y provides a one-key
command to append program files —
handy for writing long, multipart pro-
grams. Documentation is provided in
Merge. ins. Key2.ed.y is an edit program
described in Keyed. ins. MFMformat2.y
allows the formatting of disks in several
different CP/M MFM formats while in
C-128 mode. MFMdisk.ins is the
documentation describing this one. CPM
Block.y allows the viewing of the block
allocation of CP/M disks while in C-128
mode. Its usefulness and limitations are
described in Block. ins.
All in all , this is a well-rounded package
to enhance any collection.
c-128 disk t y]ob
8 "list-met y)<=>b" prg
1 " games " prg
40 "number invaders" prg
1 "scores-num. i . " seq
3 "racecar4 . spr"
21 "factor race.y"
2B "geography . y"
89 "definition.y"
52 "proverbial . y"
1 ". . .utilities. . ."
15 "filecon.y"
2 "Filecon.ml"
17 "filecon.ins"
20 "ibm-filecon-lst"
10 "ibm-f ilecon-ins"
4 "autobootmaker2.y'
5 "autoboot .ins"
6 "hi-res text.y"
16 "hi-res. ins"
2 "mergekey setup.y'
3 "merge. ins"
7 "key2.ed.y"
2 "keyed. ins"
6 "mfmformat2. y "
6 "mfmdisk . ins"
2 "cpm block.y"
5 "block. ins"
P< v g
Prg
prg
prg
prg
prg
prg
prg
seq
seq
seq
Prg
seq
prg
seq
prg
seq
prg
seq
Prg
seq
prg
seq
VIC 20 Disk(V)TR
Prepared by Richard Best
February's addition to the VIC Library
contains a concentration of educational
programs, but everyone should be able to
find something useful or interesting here.
Many of the programs do not require any
expansion.
The disk/tape starts out with an inter-
esting game called rescue, wherein you
must rescue little men who have been
trapped on ledges inside a cave. The cave
is patrolled by deadly flying dragons. The
one other game here is football for an ex-
panded VIC. The screen display is a bit
sparse, but the flavour of the game is
maintained.
In the utility department we have
pause, which turns the left shift keys into
pause keys. Use this one to stop and
restart program listings when debugging.
easter will calculate the date of Easter
Sunday for just about any year.
comic file is a nicely written file
manager for tape users. It helps you to
create and maintain a data base of your
comic book collection, file mast 2 is an
upgrade of file master", which appeared
on (V)TL. This 'scrunched' version allows
you to create a larger file when using only
8K of expansion. You will need a disk
drive.
We have two SuperExpander demos
that illustrate animation with perspec-
tive. Each moves a flying saucer from one
corner of the screen up to the front, ufo-1
The Walker
1) Insert your COMAL disk in drive*.
2) Type LOAD "C64 COMAL* " ,8
3) Type RUN {starts COMAL)
4) Type AUTO
(COMAL provides the line numbers)
5) Enter the program lines shown below
(COMAL indents lines for you)
6) Hit RETURN key twice when done
7) Type RUN
Watch an animated sprite hobble
across the screen. Change the (99)
in line 450 for really fast walking
0010 setup
0020 repeat
0030 walking
0040 until key!= n q" //Q to Quit
0050 //
0060 proc setup
0070 blue:=I4; pink—10
0080 white:=l; black:=0
0090 define'images
0100 repeat
0110 input "speed (1-10): ": speed
0120 until speed>=l and speed<=10
0130 background black
0140 Betgraphic
0150 gpriteback blue,pink
0160 spritecolor 1, white
0170 spritesize l.false.false
0180 plottext 1,1, "press q to quit"
0190 endproc setup
0200 //
0210 proc define'images closed
0220 dim shape$ of 64, c$ of 1
0230 shapej(l:64):=""
0240 shape$(64):=chr$(l)//multicolor
0250 c$:=chr${0)
0260 forx=22to63doshape*(x):=c$
0270 c$:=chrj(170)
0280 for x=l to 21 do shape$(x):=c$
0290 define 0,shapc$
0300 c$:=chr*(20)
0310 for x=22 to 42 do Bhape$(x):=cJ
0320 define 1, shape J
0330 define 3,shape$
0340 c$:=chrj(60)
0350 for x=43 to 63 do shapet(x):=c$
0360 define 2,shape$
0370 endproc define'images
0380 //
0390 proc walking
0400 for walk:=l to 319 div speed do
0410 x:=walk*speed
0420 y:=100+walk mod 4
0430 spritepos l,x,y
0440 identify l.walk mod 4
0450 pause(99)
0460 endfor walk
0470 endproc walking
0480 //
0490 proc pause(delay) closed
0500 for wait:=l to delay do null
0510 endproc pause
* If you don't have COMAL yet, order a
Programmer's Paradise Package -119.95.
It includes the complete COMAL system
plus over 400 pages of information. Add
$5 more to get our 20 interactive lesson
Tutorial Disk. Add $2 shipping. Visa/MC
or US funds check accepted. Send to:
COMAL Users Group USA
6041 Monona Drive, Room 109
Madison, WI 53716
phone 608-222-4432
TPUG Magazine 37
Library Additions , —
moves the object by redrawing each line
in turn, and ufo-2 redraws the entire
ship . These were written by a physics pro -
fessor and contain lots of comments and
some integral math.
To keep those old gray cells working,
we have a nice collection of quizes and
tutorials, brain teasers is a mini IQtest,
guaranteed to tax your problem-solving
abilities. If you've been having trouble
sorting out numbering systems, place
value will help by drilling you on the
decimal system. A very nice, graphic
lesson in fractions is presented in pie
chart. You will need a Super Expander,
an 8K expander and a 'mother board' to
run this one.
Youngsters who are just learning
multiplication and division should find
2-Digit Mult and 2-Digit Div very
helpful. Each drills the student by prin-
ting problems on the screen. The pro-
blems are printed as they would appear
on paper and you solve them just as you
would if working on paper. This is
especially effective in 2-Digit Div, which
rejects incorrect numbers and provides
helpful prompts.
vie disk (v)tr
9 "list-me (v)t-r/1" prg
4 "list-me (v)t-r/2" prg
2 "rescue boot.v" prg
10 "reseue.vSk" prg
2 "pause. v" prg
14 "brain teasers. u" prg
9 "place value. v" prg
7 "comic file.v" prg
12 "2-digit mult.v" prg
13 "2-digit diw.v" prg
5 "easter.v" prg
B "ufo-1 .VSX* prg
5 "ufo-2. vsx" prg
28 "pie chart. vsx+8" prg
18 "football. v12k" prg
22 "file mast 2.v12k" prg
Super- OS/9 Disks
Presented by Bill Dutfield
As of the middle of January, the follow-
ing OS-9 disks have been released to the
Public Domain. All the programs have
been obtained from the OS-9 User Group.
The load modules are to be found in the
CMOS subdirectory, descriptions of the
programs are in the HELP subdirectory
and the source code is in the SRC
subdirectory.
Utilities Disk S1
The contents of this disk include: Tree,
a module listing all the files in a Super-
OS/9 Relative file, of which there is usual-
ly one per disk for the distribution library.
Ap is an append utility to append a file
or to combine several files into one, Attr
chg changes the attributes of a file.
BootSplit splits merged object files (such
as OS9Boot)into separate modules. Ddir
lists active system devices, their path
descriptor address, physical address,
system buffer, device driver and file
manager. Dlist dumps disk sectors.
Dates keeps track of dates, appoint-
ments, birthdays and warns when they
are coming up. DocGen2 is a submission
form for use when submitting Super -OS/9
Software. Hcopy hierarchically copies
one directory to another. Help displays
a help file. Hdir is another multilevel
hierarchical directory. Install adds a file
to the system for inclusion at boot-up.
ListN lists a text file. Lload uploads a
text file, one line at a time, to a full-
duplex bulletin board system. Make
assists in the control of relinking
multimodule files when one module is
changed. ModList lists the files in a
multimodule file. QDir outputs a vertical
module listing. RMLocate calculates an
RMS record number for a given key field.
RMNew is used to generate a blank data
file for RMS. ReHook moves a file from
one directory to another on the same
device. Remote links the user to a remote
terminal path for communication.
Replace replaces strings in a text file.
Strip is used to strip, add or process any
combination of: CRs, LFs or other con-
trol characters. Wcl counts the
characters, words, and lines in a file using
32 bit numbers.
Adventure Disks S2 and S3
This game (the usual search for treasure
in the underground caves of the author's
imagination) is released on two disks. The
first, S2, contains the executable module
and the associated data files, while the
second, S3, contains the source code.
Utilities Disk S4
The contents of this disk include three
SuperPET programs plus a further
assortment of Super-OS/9 files.
The three SuperPET programs are
Test. main, Test.banks and Test.os9.
These three programs provide a complete
set of tests to test main memory and the
banked memory on the SuperPET.
The OS-9 programs are: Bincom which
compares two files on a byte-by-byte
basis. Diskid rewrites the diskname and
date on LSNO. Dlist dumps disk sectors.
Grep is a text search program. Hcopy
hierarchically copies one directory to
another. Hdel is a hierarchical delete
function. Kalah is a game based on
ancient Bedouin Arab game . Mount is a
command to change allocation of Super-
OS/9 files where there are two or more
on a device (for 8050 or 8250). Print.b is
a file printing utility. Replace replaces
strings in a text file. Texcom compares
two files a line at a time. Today lists date
and time in a legible format.
Math Library Disk S5
This disk contains a series of math
routines for use with the Micro Ware C
Compiler. They are written in 6809
assembler language for speed, and are
computed in double precision.
Xlisp Disk S6
Xlisp is a variation and subset of the Lisp
language, used in artificial intelligence
applications.
Kermit Disk S7
Kermit is a communications protocol for
the transmission of files between com-
puters. This disk contains a version of
Kermit for use under Super-OS/9. Pro-
vided is the source code written in C
along with an executable load module and
a help file. Kermit works well in conjunc-
tion with xcom9, provided on the Super-
OS/9 distribution disk.
C Language Disk S8
This disk contains: Delw to delete a list
of files using wild cards. Pf, a simple for-
mat utility to output text such as source
code to the printer. Ppc is another pro-
gram, functionally richer, to format out-
put for printing. Print.c is yet another
output formatter, with even more
features.
The following five programs work with
various 6809 assembler code found in the
various implementations of 6809 systems.
Slflex is a program to build a flex binary
file from an SI input file. S lintel con-
verts SI format text file to Intel format.
Slload builds a binary file from an Si in-
put file. Slunflex converts a flex binary
file to SI format. Si unload is a program
to convert straight binary file to SI for-
mat. Showc is a utility to make unprin-
table characters in a text file visible.
Temp compares two text files, printing
differences, and attempts to synchronize
after finding differences. Xc is a cross
reference and printing utility for C pro-
grams (it doesn't work on its own, but
does work on other, smaller files.)
Xc.com is a batch file for compiling xc
using /DRAM and /Dl. D
38 Issue 23
Softwar
NAME
STREET ADDRESS
CITY/TOWN/P.O.
PROV/STATE
TELEPHONE
POSTAL/ZIP CODE
MEMBERSHIP NO.
orde
lor
TORONTO PET USERS GROUP, 101 Duncan Mill Road, Suite G7, Don Mills, Ontario M3B 1Z3 416-445-4524
disks
To order club disks by mail, send $10.00 for each
4040/2031/1 540/1541 disk (4040 format), discount price
5-10 S9.00 each, II or more S8.00 each; and $12.00 for
each 8050/8250 disk (8050 format), We do honour
purchase orders from school boards.
These disks are for use with a
Please send me the following:
3 Letter/No.
Code
computer and a .
disk drive.
Description
4040 or 8050
Format
Price
Total $
.00
tapes
These tapes are for use with a
If for a PET computer, what model -
3 Letter/No. Code Description
To order VIC 20 or Commodore 64 library
tapes, send S6.00 for each tape.
To order PET/CBM or Commodore Educa
tional Software, send $10.00 for each tape.
computer and a datasette.
-'BASIC - 1.0| ); 2.0( ); 4.0| )?
Price
Total $
.00
The prices indicated include postage and handling as well as
Ontario Provincial Sales Tax (if applicable)
□ Cheque/money order enclosed (payable to TPUG)
DVisa/Mastercard it
\ Srgnatu
Reviews.
MTBASIC
from Softaid
Multitasking BASIC Compiler
forCP/M ontheC-128
Review by Adam Herst
In an issue devoted to alternative
languages for Commodore computers, a
review of a third-party BASIC seems
slightly misguided. If there is one
language with which all Commodore
users are familiar, it's BASIC, in one of
its various incarnations from 2.0 to 7.0.
These BASICs are built into the com-
puters themselves and become available
on power-up, providing an easy, effective
interface to the system hardware. The
C-128 in CP/M mode lacks this amenity,
BASIC being as foreign to CP/M as
Pascal, Cor Lisp.
Any implementation of BASIC in CP/M
mode will be compared to the powerful
BASIC 7.0 available in 128 mode.
MTBASIC can only be described as
sparse when this comparison is made. As
a generic CP/M compiler, no effort is
made to access the 128's sound or
graphics capabilities. Command? to
facilitate structured programming are
totally absent, and the rules for variable
names are, in some ways, more restric-
tive than in Commodore BASIC. Within
these limitations, however, MTBASIC
implements a number of features that
make it a powerful CP/M utility.
The MTBASIC I reviewed came on a
single, Kaypro IV formatted disk that
was handled admirably by my 1571.
Nonetheless, reported difficulties have
led to distribution to 128 users on
Osborne disks. The implementation is
configured for a Kaypro ADM-31 term-
inal. An install file, written in MTBASIC
and necessary for reconfiguration of the
terminal type, accompanies the program.
Also included on the disk are three
sample programs that demonstrate the
special features of MTBASIC, and a util-
ity program to renumber MTBASIC
source code files.
The manual accompanying the disk is
comprehensive and easily understood, if
poorly organized — installation instruc-
tions should not come 30 pages in. A por-
tion of the text concerns the MTBASIC
implementation on MS-DOS machines
and is irrelevant to the CP/M user. The
manual is divided into two parts:
• Using MTBASIC: this section gives in-
structions on installing MTBASIC; ex-
amples of programming the special
features of MTBASIC like windowing
and multitasking; handling disk files and
directing I/O channels; and speeding up
programs. All of the topics are accom-
panied by simple programs illustrating
the concepts.
• I Iser Reference: This section details the
syntax of MTBASIC and covers the
direct (immediate mode) commands.
System details and operating system in-
terfacing are covered.
MTBASIC is invoked by typing mtbasic
at the CP/M system prompt. When act-
ive, MTBASIC displays '>' as its
prompt. While this prompt is displayed,
crude line editing commands are in effect,
allowing you to type in either program
lines (preceded by line numbers) or direct
commands. This editor provides seeming-
ly full syntax checking, and will not ac-
cept a syntactically incorrect program
line. While suitable for short, un-
complicated programs, a full-fledged text
editor is definitely required for big jobs!
Direct mode commands allow you to do
simple file manipulation, as well as con-
trolling the compilation process.
MTBASIC's greatest faults lie with
this editor. Most annoying is the lack of
disk commands, especially one to read the
directory. The only way to do this is to
exit the compiler. The second fault can
be dangerous as well as inconvenient.
Source code files (and object code files
generated by the compiler) will be writ-
ten over existing files of the same name
rather than aging the files with a .bak or
.$$$ designation. This makes it possible
to replace your only correct copy of a file
with an incorrect copy! Not a nice way
to start your day.
MTBASIC is a compiler, but a compiler
with a twist. Once the source code is
loaded or typed into memory, it can be
compiled to memory and immediately ex-
ecuted by issuing a run command. With
its quick compile times (see below),
MTBASIC can act as a pseudo-
interpreter. As well, programs can be
compiled to memory and not executed, or
compiled to disk. Errors during compila-
tion leave the offending line in memory
to be corrected. Programs compiled to
disk exist as .com files, and can be ex-
ecuted independently of MTBASIC.
Two aspects of a compiler determine its
usefulness: a full implementation of the
target language, and good compilation
specifications. MTBASIC implements a
decidely eccentric version of BASIC. No
attempt is made to adhere to the Micro-
soft pseudo -standard. While the syntax
is fairly standard, incompatibility is en-
sured by MTBASIC's requirement that
all variables and arrays be declared as
real, integer or string. Consequently,
foreign BASIC source code requires
massive translation before it can be com-
piled. Also, MTBASIC does not recognize
differences in variable names across
modes. You could not declare both in-
teger a and string a in the same
program.
In extent, the vocabulary of MTBASIC
is most similar to BASIC 2.0. It surpasses
BASIC 2.0, however, with its extensive
set of disk and I/O commands, the vari-
ety of its predefined functions and its ex-
tremely versatile user defined functions
(multiple lines, multiple argument, mult-
iple variable type). A call statement with
variable passing is available for executing
machine language program modules.
The power of MTBASIC lies in its
multitasking and windowing commands.
Multitasking is implemented using inter-
rupts to signal the execution of indepen-
dent tasks. In the CP/M version of
MTBASIC, the interrupts are pseudo-
interrupts. As a generic CP/M package,
MTBASIC is configured to function on
any computer running the CP/M oper-
ating system. Since some such computers
do not have a functional hardware-
interrupt, pseudo-interrupts are inserted
into the object code during compilation.
These software-generated interrupts are
calculated on the basis of code structure
and do not reflect real-time accuracy. The
process of installing true hardware -
interrupts is mentioned briefly, and com-
mands are provided to enable them.
Up to ten tasks can be run concurrent-
ly, although fairly severe restrictions
apply to their interaction. All variables
40 Issue 23
are globally defined and can be altered by
any of the executing tasks. I/O operations
must be designed so that no conflict
arises between tasks for access to a given
device. Powerful windowing commands
are implemented which, combined with
MTBASIC's multitasking abilities,
should allow the creation of sophisticated
programs.
The most critical aspect of any compiler
is its compilation specifications. Slow
compilation times, large object code and
slow execution times can make even the
most full-featured compiler useless in pro-
gram development. MTBASIC contains
a number of commands to control the
compilation process. Compilation can be
directed to memory or disk, with or
without run-time error checking, and
with or without the run-time modules re-
quired for multitasking. The first com-
mand affects the speed of the compilation
process, while the latter commands affect
the size and speed of the resultant object
code.
To benchmark the various compilation
times, I used the source code for the in-
stall file. This file, which occupied 6K on
a CP/M directory, compiled to memory in
less than two seconds. Compilation to
disk required 81 seconds. To assess ex-
ecution time, I ran the Sieve of
Eratosthenes program that BYTE
Magazine uses for a standard benchmark.
With error checking and multitasking off,
the MTBASIC version ran in 155
seconds; it took 230 seconds with error
checking and multitasking on. The
BASIC 7.0 version ran in 436 seconds in
fast mode.
All in all, MTBASIC is an excellent
package for a number of reasons. As an
interface to the CP/M operating system
it is both powerful and familiar to the
Commodore BASIC programmer. Its
ability to multitask provides a unique en-
vironment for the development of pro-
grams. These should be extmnely por-
table across CP/M computers (if the ob-
ject code doesn't work just install your
version of MTBASIC on the target com-
puter and recompile the source code) and
even to MS-DOS computers (compile the
source code with the MS-DOS version of
MTBASIC). The speed of compilation to
memory and the ability to execute this
code without leaving the compiler ease
program development. Finally,
MTBASIC's low price ($39 US) and lack
of copy protection make the package an
excellent value.
MTBASIC CP/M BASIC Compiler, Soft-
aid Inc., P.O. Box 2412, Columbia,
Maryland 21045-1412. □
PROMAL
from Systems
Management Associates
Programming language
f Commodore 64
Review by Nick Sullivan
For most people, the Commodore 64 is
a bilingual computer. For those who value
a comfortable programming environment
over performance, it offers the rather im-
poverished BASIC 2.0 dialect that,
despite all drawbacks, has been the vehi-
cle for some wonderful programs over the
last few years. The 64 also makes life
pretty easy for machine language pro-
grammers, who have a wide range of ex-
cellent tools at their disposal, and an un-
surpassed wealth of documentation to
light their way.
In between lies a large middle ground
that has seen lots of contenders, but no
clear winners. Ingenious programmers
have contrived to adapt Pascal, C and
Forth to the limited memory and sluggish
disk speed of the 64. Several implemen-
tations of each of these languages are
available, but none has caught on in a big
way. Perhaps the compromises necessary
to make them work in a relatively
restricted environment have strained
their integrity too far. The very im-
pressive cartridge version of COMAL has
fared somewhat better than the compil-
ed languages, having been designed from
the ground up to maximize the potential
of the machine, but its growth has been
inhibited by its dependence on the
language firmware — you can't run a
COMAL 2.00 program unless you have
the cartridge.
In PROMAL, written by Bruce D. Car-
brey, programmers now have the option
of a compiled language designed
specifically for three 8-bit microcom-
puters, the Commodore 64, the Apple lie
and the Apple He. Syntactically, PRO-
MAL most closely resembles a stripped-
down version of C, though programs are
compiled in one pass in the manner of
Pascal. Its best feature is its ability to
maintain source code, object code, editor
and compiler simultaneously in memory
for short programs. Programs needing
more elbow-room can be handled by com-
piling from and to disk and, if necessary,
temporarily unloading the editor. In this
way, the system is capable of generating
substantial programs — up to 35K of
combined code and data.
Rev lews
PROM AL's programming environment
is a 'shell' — a sort of control centre from
which you can invoke the editor or the
compiler, and which also provides com-
mands for disk operations, checking
system status, and so on. Like the other
parts of the system, the shell has been
constructed with careful attention to
detail. For instance, it is possible to
retrieve the most recently issued com-
mand at a keystroke (ctrl-b); further
repetitions of ctrl-b recall previous com-
mands up to the limit of a 256-byte buf-
fer. Users of the Amiga CLI (Command
Line Interpreter) would sign away their
limbs and vital organs for this facility.
Some of the other features provided by
the shell are online help, good command-
line editing, and memory dump and fill
commands in the manner of a machine
language monitor.
Like the C-64's resident BASIC editor,
the full-screen PROMAL editor is not in-
tended as a general -purpose tool , but has
instead been designed as an integral part
of the total system. Most notably , it pro-
vides features that simplify the proper
indentation of source programs, for
indentation in PROMAL is syntactically
meaningful, not just cosmetic. Specialized
as it is, however, the editor is both power-
ful and straightforward, with facilities
like search and replace and block move
that are nearly indispensable when you
are writing long programs.
Now that we've got into the editor, let's
take a quick look at the language itself.
The similarity to C is so strong that PRO-
MAL might almost be recommended as
an intermediate step for those who are
approaching C from BASIC. Like C, a
PROMAL program consists of functions
that may or may not return a value, that
can employ local or externally-declared
variables, and that may call themselves
recursively. PROMAL's manner of handl-
ing variable types is similar to C's, though
the range of types is severely limited —
PROMAL does not offer struct or enura
types, for instance, and allows arrays of
one dimension only. There is no double-
precision option for real numbers, either,
but PROMAL's six-byte floating point
numbers are at least two digits more
precise than the single-precision numbers
in most other languages. Strings in PRO-
MAL consist, as they do in C, of null-
terminated byte arrays.
There are many further parallels. PRO-
MAL offers convenient means for deal-
ing with pointers and addresses, a
welcome borrowing of one of C's most
powerful features. Then there's the stan-
dard output statement, called output
here rather than printf , but altered only
TPUG Magazine 41
Reviews
superficially from the C original. Lastly
— because you must be getting the idea
by now — PROM AL makes use of a stan-
dard library of routines plus several
special purpose libraries for things like
floating-point operations, relative file
handling, and RS 232 support. These are
incorporated into your program with an
include statement near the start of your
code.
All the above notwithstanding, PRO-
MAL source code and C source code look
quite different. Specifically, PROMAL
does without C's ubiquitous open and
close braces to mark program structure,
without many of C's parentheses, and
without the semicolons that terminate C
statements. PROMAL's lack of an ex-
plicit statement terminator is due to a
limitation: each statement must occupy
one and only one program line. This con-
fines statements to 80 characters, a
restriction that the horizontally-scrolling
editor enforces.
The absence of special punctuation to
mark program structures is more in-
teresting, for PROMAL does support ver-
sions of the usual structured statements
(while and so on). However, in PROMAL
you group the statements within a struc-
ture by indentation, not punctuation.
Since a logical scheme of indentation is
favoured by programming theorists as an
aid to clarity, which simplifies debugging
and maintenance, PROMAL effectively
kills two birds with one stone by making
indentation a syntactic requirement.
PROMAL uses a one-pass compiler,
like Pascal. This makes for speedier
operation than a two-pass compiler (as in
C) would allow, but it does have
drawbacks for the programmer. A one-
pass compiler requires that all references
to variables, procedures and functions be
backward rather than forward — the
compiler needs to know what you're
referring to before you actually refer to
it. (There is a small exception to this rule,
necessary to permit recursion, but it
holds for all other situations.) This means,
for example, that your mainline function
must be the last to appear in your source
code, and that your most general sub-
functions must be defined after the
specialized sub-sub-functions they may in-
voke. This calls for bottom-up program-
ming, in defiance of those same theorists
whose preference for indentation was
noted above.
Advertisements for PROMAL lay great
stress on the language's speed and com-
pactness — qualities associated above all
with machine language. It comes as
something of a surprise, then, to find that
PROMAL compiles to pseudo-code rather
than machine code, and that some 12
kilobytes of run-time support are needed
to underpin even a trivial program. This
is not to say that the advertising claims
are without foundation: PROMAL is
undeniably much speedier than BASIC
for many applications, and programs are
very compact when you discount the 12K
overhead. Still, it seems likely that some
of the Pascal and C implementations for
the 64 that do compile to ML would
generate faster code than PROMAL in
equivalent applications.
The PROMAL manual is perhaps the
best I have seen for any C-64 language.
It is clear, welt -organized, accurate and
comprehensive. It consists of an introduc-
tory tutorial, and separate reference sec-
tions for each of the major components
of the system, including detailed descrip-
tions of all library functions. Even those
with no prior knowledge of a compiled
language should have little difficulty in
mastering PROMAL after a thorough
reading of this excellent documentation.
The package comes in two flavours: one
for programmers and one for developers.
The primary difference between the two
(apart from cost) is that the developer's
version includes a facility for generating
stand-alone programs, whereas programs
written with the programmer's version
can only be run under the PROMAL shell.
This is barbaric. The manufacturer's ad-
ditional effort in producing the
developer's version must have been com-
paratively small; the difference in cost
between the two versions is therefore
nothing more than a price penalty one
must pay in order to do serious work with
the system.
PROMAL offers no built-in support for
graphics and sound programming on the
64; nor are library functions for these
purposes included in the package. Sup-
plementary (looseleaf) documentation in
the package I reviewed refers to a "hi-
res windowing package", as an example
of optional software available from the
manufacturer (again at extra cost), but
those who might wish to use sound,
sprites or hi -res on their own will find no
aid beyond a clunky, simple-minded video
game (presented as an advanced sample
program on the disk).
Despite these drawbacks, PROMAL is
an ingenious and largely successful at-
tempt to provide a compiled language
congenial to the world's most popular
computer. It is not likely ever to make the
transition to the 16-bit world, where the
advantages of C are much more compell-
ing, so it does not have the strong argu-
ment of widespread portability in its
favour. But for those who are frustrated
by BASIC, yet intimidated by C or
machine language, and for whom por-
tability to other computer brands is not
a concern, PROMAL offers a host of good
features that make it worthy of serious
consideration. □
Super Graphix Jr.
from Xetec
Printer interface
for C-64 and V!C 20
Review by Ranjan Bose
This small black box will, for $78.00
(Cdn.), let your Commodore computer
communicate with parallel printers.
Hookup is easy. The unit has three
cables connected to it. The serial cable
goes to the serial port on your computer
or disk drive. A wire ending in an adapter
goes to the cassette port to draw power.
(A Datasette can still be used — it plugs
into the adapter.) The parallel cable pro-
vided connects the unit to the printer.
Eight easily -accessible DIP switches let
you adjust line feed, printer type, inter-
face mode, device number and font. You
can either use the regular dot matrix font
provided by your printer, or use the in-
terface's Epson-like correspondence
quality font. The interface allows you to
work in 1525 emulation mode (ignoring
non-1525 codes), ASCII mode (converts
PETSCII to ASCII), transparent mode
(no translation, no modification) and a
'Super Graphix' mode, which is almost
like all the other modes rolled into one.
In this mode you can send
1525-compatible codes (graphics, Com-
modore graphic characters, reverse field
characters) and also send non-
Commodore codes to your printer (italics,
emphasis, superscripts, high-density
graphics, and so on). This mode also per-
mits you to list the graphics and control
characters in a program in four different
ways: as they appear on screen, as
mnemonics, as key -presses (shift-c would
be listed as SC) or as ASCII codes.
You can access more interface func-
tions by opening several channels with
different secondary addresses for prin-
ting with upper case/graphics, with up-
per/lower case, in transparent mode, with
or without line feed or in hex dump for-
mat. Any of these modes can be 'locked
in' by adding 20 to the secondary address.
You can also open a command channel to
specify or change the several listing
modes and to unlock the interface. I have
written a program that prints text, Com-
42 Issue 23
modore graphic characters and quad den-
sity graphics all on the same line. This re-
quires that I communicate with the
printer in the emulation and transparent
modes at the same time. From what I
hear, most other interfaces are allergic
to this kind of mixing.
The interface has a number of other at-
tractive features. The DIP switches are
'active': should you want to change a set-
ting , you do not have to power do wn . The
quality of the graphic characters and
reverse field characters found in the in-
terface ROM is much superior to that
available on Commodore printers. The ac-
companying manual is as well put
together as the interface.
At present day prices for parallel
printers and interfaces, it no longer
makes sense to buy a Commodore printer
and forego all the features and flexibili-
ty available on other printers. Xetec's
Super Graphix Jr. is an excellent inter-
face and I highly recommend it.
Super Graphix Jr. parallel printer inter-
face, from, Xetex Inc., 3010 Arnold Road,
Salina, KS 67401. □
Elite
from Firebird
Space simulation game
for Commodore 64
Review by Thomas Jones
The word 'elite' means 'the best', and it
is an appropriate name for this new pro-
gram for the Commodore 64.
Using a combination of high-resolution
colour graphics for the cockpit and in-
struments, and three-dimensional wire-
frame graphics for the view of outer
space through the windows, this simula-
tion convincingly puts you into the hot-
seat of an interplanetary lone-wolf trader
in the mid-thirtieth century. It is a ride
to remember.
Unlike simple shoot-'em-ups, Elite is an
interesting mix of several challenges. It
delivers such a realistic simulation of
navigation and docking in three-
dimensional space that it could become
the Flight Simulator II of spaceship
simulators. The sensation of disorienta-
tion common to astronauts is also fre-
quently felt when flying the Elite craft.
In addition to flying the ship and
fighting, however, you must try to turn
a profit in Wall Street fashion, trading
goods to earn money to equip your basic
Cobra trade vessel. Starting with a
100-credit stake, and a single pulse laser
for defence, you must shrewdly assess the
governments of many planets and the
possible needs of their races.
Even if you develop a keen sense for
profitable trade, Elite remains difficult,
because many dangers await. Around
many planets, and especially poor planets
with dictatorships or in anarchy, pirates
are ever-hungry for a rich cargo. The ac-
tion is fast and deadly when you meet
them , and you may find yourself crying
out "What would Han Solo do now?" —
it will take more than fast reactions to
defeat many of these ships.
If you do shoot down a pirate, you may
receive a bounty from Gal Cop, a big
brother police force. Gal Cop sees
everything you do on its super-radars,
and knows you by your ship's radar
signature. Not all ships you meet are
pirates, however. If you attack a law-
abiding ship, GalCop will put a price on
your head. If this happens, on your next
trip you will meet bounty -hunter ships,
manned by excellent, combat-rated pilots
and equiped with heavy armaments.
Worse, GalCop itself is present in most
systems to some degree, and will attack
a criminal ship aggressively with fast
combat Vipers when approached.
Assuming that you survive and keep
your nose reasonably clean, you can
amass money to further equip your ship
in whatever way you deem fit. If, for ex-
ample, you buy external scoops and a
mining laser, you can go prospecting for
asteroids. You sell the ore as well as
trading goods, and you may occasionally
find a few canisters of cargo in space to
salvage. If you remain on the right side
of the law, you can expand your cargo
space, add an escape pod and better
weapons, and trade on unstable planets
that, while they attract unsavory pirates
and rogues, pay premium prices for your
cargoes. You can try trading in slaves,
drugs, and guns if you can weather the
wrath of GalCop when you try to dock at
a civilized Corporate State or Democratic
Multi -Government planet. As a last
resort, if you can't make an honest liv-
ing, you can even turn pirate yourself.
Pirates destroy trade ships and scoop up
their cargoes.
Your main navigational instrument is
a remarkable 3-D radar scanner showing
everything in your immediate area. You
learn to use this to fly to the station, dock,
and to engage (or flee) enemy ships.
Other instruments to help you include in-
dicators for speed, fuel level, shield
power, cabin temperature, altitude above
planet, laser temperature, energy bank
charge , roll and pitch.
Reviews
In the event you exhaust the trading
possibilities in this galaxy, and if you can
get up the price of an inter-galaxy Hyper-
drive unit (sold only on high tech worlds),
you can move on to the next of eight
galaxies! I may never get out of this one.
Game options include a fast-load on/off,
keyboard or joystick, enhanced planet
detail on/off (there is a slight cost in speed
for using this option), music on/off and
more. You can save your current position
to any formatted disk and restore it later.
It retains all the positions saved, so you
can return to any save point. Each save
uses one block on the disk, and a unique
code number is issued at each save, which
you can send in to Firebird to enter a con-
test. More on this presently.
The program consumes about a third of
the disk, and loads entirely into memory
on the initial boot. It loads fairly quickly
even without the fast -load option. I have
had some problems with bad loads
resulting in garbage on the screen, but
it may be that this just reflects a glitch
with my copy of the game.
Documentation for Elite is very com-
plete and of excellent quality. It includes
a sizable instruction manual, written in
the style of the USS Enterprise Opera-
tions Manual. For added entertainment,
you also get a science fiction novel based
on the game! To help with the game-play,
you are given a keyboard overlay, a chart
of the types of ships, and a reference card
to help you remember the commands.
The complex story line and high level
of detail reflects a mature program with
a following like that of the Dungeons and
Dragons game. Indeed, Elite is but the
latest version of a program nurtured and
honed on the English BBC Home Com-
puter , It is reputed to be the finest game
ever created for this computer, and I
believe it will be a classic for the C-64 as
well.
Firebird is a London -based company,
apparently distributing Elite under
licence from AcornSoft (the BBC Home
Computer is built by Acorn). When I
ordered my copy of Elite from a dealer
in Herts, England, I received a cassette
with the European (PAL video system)
C-64 version on it. This would run fine on
PAL systems, but not on my American
(NTSC video system) C-64, so I contacted
Firebird for a replacement. I was mildly
surprised at the promptness with which
the Firebird staff obtained a USA-version
disk from their United States subsidiary.
They even sent a cassette with one of
their new games on it to compensate me
for any inconvenience! This is rare
service.
If that isn't enough for you, though,
TPUQ Magazine 43
Reviews
Firebird offers a monthly contest to find
the best Elite pilots (remember that cod-
ed number at each save?)
this
If you can only afford one game
year, I suggest Elite!
Bite, $29.95 (US) from Firebird Licensees,
Inc., P.O. Box J>9, Ramsey, New Jersey
07U6 U.S.A. □
Power Plan
from Abacus Software
Spreadsheet program
with graphics
for Commodore 64
Review by Dave Powell
My first impressions of this spreadsheet
were not good. It swore at me in German
when I tried to Fast Load it and, once
loaded, flashed the borders and wailed at
me whenever I made a mistake. During
my first session with it, it crashed.
However, I hadn't tried the graphics yet,
so I persevered. I was coming at Power
Plan having used a dozen spreadsheets
previously. And it's different! Now that
I'm used to it, it doesn't wail so much. (By
the way, I never could recreate the situa-
tion that crashed it.)
I liked some features I hadn't seen
elsewhere: showing all the formulae on
the screen; good use of colour, including
the ability to colour any cell, any colour;
and a bar on the input line to show how
much of my text would fit in the current
column. I can change my mind about the
celt I meant to use, while in the middle
of entering data; and a single key will
repeat the previous command, without a
sidetrip through the menus.
I wasn't crazy about the manual. Some
typos (and screen text, too) appear to be
a product of the translation from Ger-
man. ("Enter J for Yes"; and "Pie Cake"
graph.) Another complaint about the
documentation: it's too detailed! The
training manual drove me to distraction
by explaining every point to the tenth
degree. But I have to say it's complete.
Power Plan has too many options in
some cases (Do you want to change cell
references in remaining formulae after
deleting a column? Yes, of course!), and
too few in others (you can't choose the
disk i.d. when you format a disk). My
overall feeling is that it has slightly less
spreadsheet function than its contem-
poraries, but certainly enough for most
purposes short of small business. I found
it harder to use, but most of that may be
ingrained habit.
Power Plan's most distinctive feature,
though, is its graphics.
When your data is calculated, choosing
the graphics option leaves the data in
memory, and loads new code to draw
pretty things. These are presentation
graphics — good for showing, more than
using. There are no measurements on the
axes for instance. A good set of options
are provided: bar, pie, point, min-max
(stock-price type) and points joined
(straight lines). The first two also come
in 3-D versions which adds flair. No titl-
ing is done for you, but a text editor
allows titles, values, labels and whatever
to be added. Best of all , up to eight graphs
(any mix) can be put on one screen in your
choice of sizes.
This is not a production tool , because
the added text cannot be saved for use
on a later graph. Partly because of this,
getting a good-looking graph can be time
consuming. Each change of data means
a reloading of the spreadsheet code, then
reloading the graphic part (two minutes
each), and then redoing the labeling.
The graphics are better than any pro-
vided on any other C-64 spreadsheet I
have seen, and don't appear to have in-
creased the price. This might sway your
decision. If you already have a fairly re-
cent spreadsheet, this package might not
give you a compelling reason to switch.
If you don't, take a good look at Power
Plan.
Power Plan 64, from Abacus Software,
P.O. Box 7211, Grand Rapids, Michigan
49510. Disk and manual, $S9.95 US. Q
PR-1011 printer
from Roland
Dot matrix printer
with Centronics port
Review by Ranjan Bose
Roland Canada has been marketing
Panasonic printers for some time now,
and the PR-1011 is the Panasonic KX-
P1091, selling for $366.00 Cdi).
The 88 software commands that it sup-
ports are compatible with Epson codes,
ensuring compatibility with most com-
mercial software. The printer also sup-
ports special word processing commands
for justification , centering, setting up of
margins and so on. The draft quality out-
put is pumped out at 100 cps (63 lines per
minute) in pica, elite, semi -compressed,
compressed and proportional pica pitches
(10 to 17 cpi). Also available are print
styles such as double width, emphasized,
double strike, italics, superscripts and
subscripts, underlining, 11 international
character sets.
The character set is beautifully
designed , especially if you use the near
letter quality (NLQ) mode. You can
switch this on either by printing software
codes or by flipping a three position
switch that selects between draft, NLQ
and compressed modes. The NLQ prints
at 20 cps and you can use any pitch in
regular, double-width or emphasized
style. The NLQ character set is very
similar to that seen on typewriters and
is very professional in appearance. It is
the best NLQ printout that I have seen
on a printer at anywhere near the price.
The printer supports several page-
formatting commands, variable line-
spacing, horizontal and vertical tabula-
tions, and several 8-pin and 9-pin dot-
addressable graphics modes ranging from
single-density (60 dpi) to quad-density
(240 dpi). You can also design and use up
to 40 custom characters as well. The
printer comes with a Centronics parallel
interface and a IK receive buffer (about
1/2 a page of text). A serial RS-232 inter-
face and a 4K expansion buffer are
available as options. Eight DIP switches
are placed under the printhead track to
control various printer parameters. Most
Commodore-64 owners, however, will be
using the switches on their interfaces,
and need never bother with the printer
DIP switches.
The printer has both friction and trac-
tor feed, and permits trouble-free use of
single sheets or fanfold paper up to ten
inches wide. The printer is adequately
dampened acoustically, and can be made
quieter still by printing at half -speed. It
uses a seamless nylon ribbon rated at 2
million characters. When the ribbon is ex-
hausted, a built-in ink reservoir is ac-
tivated to print another million
characters. Most such ratings are
somewhat exaggerated. Three million
characters represents more than 1500
double-spaced pages of text! Also, the
actual number of printed pages goes
down with the use of graphics printing
and double-pass printing (NLQ, et
cetera).
The printer has a self-test and hex-
dump feature. The manual is comprehen-
sive and lucid. The bottom line? It's a
beautiful, flexible, very affordable,
feature -laden printer with the best NLQ
in its price category — most highly
recommended. D
44 Issue 23
Products Received
Presented by Astrid Kumas
The following ■products have been received
by TPUG Magazine in recent weeks.
Please note that these descriptions are
based on the manufacturers' own
announcements, and are not the result of
evaluation by TPUG Magazine,
The Nutritionist
The Nutritionist from Nanosec Corpora-
tion, 4185 South 300 West, Ogden, Utah
84403. Order hotline: 1-800-NANOSEC,
1-800-626-6732. Price: $34.95 (US).
Weight control, nutrition and fitness
seem to be everybody's concern, and as
they remain the topic of the day, com-
puter users will surely welcome a new
product called The Nutritionist.
The Nutritionist, a menu-driven pro-
gram for the C-64, has been designed as
"a day to day nutritional guide" to help
the user determine an individualized daily
diet based on his/her physical and work
related particulars. It can be used by
people who would like to go on a diet to
lose weight, or by those who simply want
to improve their eating habits and main-
tain present weight. The manufacturer,
Nanosec Corporation, claims that the pro-
gram has taken two years of research and
development, and is based on govern-
ment research and the professional ex-
pertise of a company called Nutrition
Lifestyles.
There are three options displayed on
the main menu: Nutrition Guide, Food
List and Exchange List. In the first op-
tion, Nutrition Guide, the user is re-
quired to enter specific information which
will calculate his/her daily calorie needs
as well as the intake values of important
food elements like proteins, fats, carbo-
hydrates, vitamins, trace elements, and
so on. In this option, the user can also
refer to the 'portioning' system which
determines the number of portions for
each category of food (dairy, vegetable,
fruit, bread and starches, meat, fat, high
carbohydrates) he/she can consume in a
day.
Having established personal nutrition
requirements, the user can proceed to the
two other options — Food List and Ex-
change List. Food List allows the user to
determine the nutritional value of various
food items. There are 898 food items, in-
cluding some popular fast-food products,
stored in the program. The nutritional
value of each product entered by the user ,
as well as the sum of all listed for the day ,
appears on the screen, showing how close
the user meets his or her nutritional
goals, and if necessary, what modification
in the diet should be made.
Exchange List presents several
categories of food products, in special
measured amounts, that contain about
the same amount of calories, car-
bohydrates, fat and protein. By this
means, foods within each category may
be substituted for one another. This op-
tion should be used when planning daily
menus.
Jungle Book
Jungle Book Reading from Fisher-Price
Learning Software. P.O. Box 1327, Cam-
bridge, Massachussetts 02238. Price:
$24.95 (US).
Jungle Book Reading for the Com-
modore 64 is an educational program for
improving reading comprehension skills.
It is aimed at children seven to twelve
years old. The program presents sixty
short stories based on Rudyard Kipling's
classic jungle adventures. Each story is
followed by a series of reading com-
prehension questions, A special
check/score system guides children back
to the text for another reading, Reading
passages and questions are similar to
those encountered on standarized reading
comprehension tests. But there is one im-
portant difference — they are not part of
any test, they are part of the game which
involves many favourite characters from
Kipling's book,
Mowgli has to find Bagheera the pan-
ther, trapped in one of the many jungle
caves. To accomplish that, he needs the
child's help. The child must read five
stories to Baloo the bear and answer all
the comprehension questions correctly.
Then after each story, following Baloo's
commmand, he/she must guide Mowgli
through the jungle to find and pass one
of the five animals which block Mowgli's
way to Bagheera.
Ernie's Big Splash
Ernie's Big Splash from CBS Software,
One Fawcett Place, Greenwich, CT
06836. Price: $14.95 (US).
Ernie's Big Splash for Commodore 64
is a preschool learning activity designed
to develop a sense of direction, as well as
the ability to plan, predict, and solve pro-
blems. Perhaps this does not sound like
much fun for children aged four to six.
But it is.
Kids will enjoy meeting Ernie and other
Sesame Street characters on their com-
puter screen. Ernie is taking a bath, and
would like to get his Rubber Duckie into
the bathtub . Children can help Ernie by
building a pathway that leads Rubber
Duckie from his soap dish into Ernie's
bathtub. The pathway can be created
from separate building pieces, with door-
ways to control the movement of Rubber
Duckie: up, down, left or right — but not
necessarily toward the tub.
The disk contains three games: Ernie's
Challenge, Ernie's Fun Pal Challenge
and Ernie's Super Challenge. Each
game introduces a new element to in-
crease the challenge for children who
have become familiar with the basic idea
of building the pathway.
As children get more and more skilled
at creating a passage for Ernie's Duckie,
parents can encourage them to predict
the number of pieces they will need to
complete the pathway. They can also ask
them to design pathways using the least
number of pieces possible, or as many
pieces as possible. □
A VIC 20 Correction
Those of you who have tried to use
P-Term.V12K contained on VIC
issue (V)TL may have noticed a
problem . Disk users are sometimes
told to "Press Play On Tape". The
problem lies in line 70, which uses
memory location 186 to ascertain
which device, tape or disk, was us-
ed to load the main body of the pro-
gram. The simplest solution is to
change the Peek in that line to a
simple '8' so that the line reads:
70 if peek(12288)< > 169
then load "term/vic.c2",8,1
Also, the List-me says that the
secondary program is a patch. In
reality, it is the machine language
portion of the terminal program —
mea culpa. We apologize for any in-
conveniences this error may have
caused.
Richard Best
TPUG VIC 20 Librarian
TPUG Magazine 45
Ask Someone Who Knows
If you enjoy Jim Strasma's many books, and his
articles in this and other magazines, you'll be glad
he also edits his own highly-acclaimed computer
magazine, now in its sixth year of continuous
publication. Written just for owners of Com-
modore's many computers, each Midnite Software
Gazette contains hundreds of brief, honest
reviews.
Midnite also features timely Commodore'
news, hints and articles, all organized for instant
reference, and never a wasted word. Whether you
are just beginning or a long-time hobbyist, each
issue will help you and your computer to work
together effectively.
A six issue annual subscription is $23. To
subscribe, or request a sample issue, just write:
MIDNITE SOFTWARE GAZETTE
P.O. Box 1747
Champaign, IL 61820
You'll be glad you did!
Tune your Computer into
• MIDI •
If you own a Commodore, Atari ST, or
Apple, then you may want to turn it on
to the world of Music with a keyboard
and interface. We stock the most popular
MIDI interfaces (starting at $49.95) plus
we have a limited offer on the CASIO
CZ101 Digital MIDI Synth, for only $269
It's easy to turn your computer into a
player piano* with the QRS Player Piano
Roll Disks that feature music from 1900's
to today (from Scott Joplin to Madonna).
Interfaces with a 6 song music disk start
as low as $49.95 and the demo has
Gershwin playing Rhapsody in Blue.
We have sequencer soft-
ware, cables, CASIO and
KORG keyboards, music
disks, MIDI interfaces,
plus more. Write or call
for more information.
CALL- 201 -838-9027
or write us at -
WiJ Hd'RAjt
DISTRIBUTING INC
llt L 'BK,A2l BuiVi Nl i'.74u r .
E3 ^1
DEALER INQUIRES INVITED
•REQUIRES MIDI KEYBOARD
avrosMW
—ST*
)0 Et* s
NO>N
from
m
■ 10% DISCOUNT
TO TPUG MEMBERS i
ON SOFTWARE. BOOKS AND ACCESSORIES
lEXClUTJING SALES ITEMS1
PHONE ORDERS ACCEPTED , "
VISA MASTERCARD AM[X
(416)633-5605
Bulletin Board
Computers in education
The Centre for Advanced Technology in Education has
published the proceedings of the 1 985 Summer Conference:
Extending the Human Mind: Computers in Education. The
388-page book is divided into three sections containing 47
papers: Curriculum Applications; Learning and
Teaching; and Classroom and School Management.
This book, and volumes containing the proceedings of
previous conferences, can be ordered from ERIC Clearing-
house on Educational Management, Centre for Advanced
Technology in Education, 1787 Agate Street, Eugene,
Oregon, US 97403.
Also from Eugene. Oregon, comes the announcement of
the formation of SiGCS — Special Interest Group for Com-
puter Science — whose primary goal is to open communica-
tions between computer science teachers by providing a
newsletter and helping to establish local groups.
The group has been formed under the aegis of the Inter-
national Council for Computers in Education (ICCE), and is
intending to explore and promote the teaching of computer
science. The newsletter will cover such topics as classroom
materials, ethical and social issues, and programming in a
variety of languages. For further information contact SIGCS
president Zab Warren, Phillips Academy, Andover,
Maryland, US 01810.
Miami M.I.C.E.
It has been brought to our attention that a new user
group has been formed in the Sunshine State, called Miami
Individuals with Commodore Equipment. Meetings are held
on the third Friday of each month at the Florida International
University Tamiami campus at 7:30 pm. The contact per-
son is Ben C. Demby Jr., President, c/o 1 1 1 10 Bird Road,
Miami, Florida 33165, telephone (305) 221-7115.
Two other user groups have announced their formation:
The MSD Disk Drive Information Exchange has been
established to serve the needs of users of these products
now that the manufacturer is no longer in business. Those
who contribute information to the exchange will be entitled
to receive: a list of software compatible with the drives,
technical data, and facts about parts and service availabili-
ty, as provided by other users. Further information about
this non-profit organization can be obtained from Paul Eckler,
2705 Hulman St., Terre Haute, Indiana, US 47803.
The International Commodore Language Interest Group
has been established to inform programmers about new
tools and algorithms in programming languages. ICLIG
publishes a newsletter, and maintains a public domain soft-
ware library. Further information can be obtained from Kent
Tegels, manager of ICLIG, at 1812 North I, Fremont,
Nebraska, US 68025, or telephone (402) 721-4346.
Finally the Rochester FORTH Applications Conference is
holding it's sixth conference at the University of Rochester,
from the 1 1th of June till the 1 4th of June. The focus of this
years conference is 'real-time artificial intelligence'. For more
information contact Maria Gress at (716) 235-0168.
INTRODUCING
THE HRT SUPER-RES
GRAPHICS BOARD
This is a graphics board which is universally compatible with all models of
PETs. With Superpets (both 2 and3 boards) It works equally well on both the
6502 and 6B09 side as well as with OS-9.
Please send cheque or MO. for S200.00 U.S. IS 5 OOC-m, plus S5 shipping
and handling (Ontario residents please add 7% Prcv. Sales Tax) To HIGH RES
TECHNOLOGIES. 16 ENGUSHIVYWAY, TORONTO. ONTARIO M2H 3M4.
Note: Please specify computer and disk drive model numbers.
(416] 497-6493
Classifieds
This space is for the ads of TPUG members. Wanted
or for sale items only. Cost is 25 cents per word. No
dealer ads accepted.
For Sale: IEEE interfaces for C-64. Buscardtl, brand new,
C64-link (416) 499-0797.
1526/802 Fonts: Triple Height Olde English, and Olde
English Condensed; Double Height, Large Block and
Single Height Olde English; Computer, and Greek fonts;
Custom Letterhead program; and 5 character-high custom :
logo. Send $40.00 to Alphacom 15, Isabel Street,
Petawawa, Ontario, Canada K8H 1Z1 (613) 687-2461.
TPUG Magazine 47
Brantford Educational Services
Cheatsheet Products Inc.
COMAL Users Group, USA
Comspec Communications
Computer Rentals
John Dunlop & Associates
Electronics 2001
The Guide
High Res Technologies
Kobetek Systems Ltd.
Lattice, Inc.
Megasoft
Mtcro-W Distributing
Midnite Software Gazette
North Ohio Firmware
Programmers Guild Products
TPUG (Disk Subscriptions)
TPUG (OS/9)
TPUG (OS/9 Software)
The Transactor
Video Variables
Wilanta Arts
World History
5
30
8,37
46
27
5
3
IBC
47
30
BC
34,35
46
46
35
11
IFC
33
15
5
19
19
27
TPUG Magazine
Distributors
Dealers: If yon would like to carry TPUG Magazine in
. your store, you may order from any one ofthefollouring
distributors:
CANADA
Master Media, Oakville, Ont. 416-842-1555
Ingram Software, Concord, Ont. 416-665-0222
Compulit Distributors, Port Coquitlam, BC 604-464-1221
USA
Prairie News, Chicago, IL 312-384-5350
Levity Distributors, North Hollywood, CA 818-506-7958
Whole Life Distributors, Engiewood, CO 303-761-2435
M-6 Distribution, Houston, TX 713-778-3002
The Homing Pigeon, Elgin, TX 512-276-7962
Northeast News Distributors, Kingston, NY 914-382-2000
Fred Bay News Co., Portland, OR 503-228-0251
Alonso Book & Periodical, Alexandria, VA 703-765-1211
Cornucopia Distribution, Seattle, WA 206-323-6247
Guild News, Atlanta, GA 404-252-4166
Micro-PACE, Champaign. IL 800-362-9653
Nelson News 4651 F Street, Omaha, NE 68127
Michianna News, Ft. Wayne, IN 219/484-0571
Total Circulation, South Hackensack, NJ 201/342-6334
TPUG Contacts
TPUG OFFICE 416/445-4524
TPUG BBS 416/273-6300
TPUG MEETINGS INFO 416/445-9040
Board of Directors
President Chris Bennett
Vice-President
Vice-President
Recording Sec.
General Manager
Gerry Gold
Carl Epstein
David Bradley
Richard Bradley
Gary Croft
Mike Donegan
John Easton
Keith Falkner
Anne Gudz
Bruce Hampson
TPUG Magazine
Publisher
Editor
Assistant Editors
Bruce Hampson
Nick Sullivan
Tim Grantham
Adam Herst
Production Manager Astrid Kumas
Ad Sales John Matheson
Meeting Co-ordinators
Brampton Chapter
C-64 Chapter
COMAL Chapter
Communications
Eastside Chapter
Hardware Chapter
SuperPET Chapter
VIC 20 Chapter
Westside Chapter
Business Chapter
New Users Chapter
C-128 Chapter
Amiga Chapter
Jackie Bingley
Keith Faulkner
Donald Dalley
Victor Gough
Darrell Grainger
Nina Nanan
Frank Hutchings
Gerry Gold
Anne Gudz
John Easton
Al Farquharson
Adam Herst
Mike Donegan
c/o 416/445-4524
416/225-8760
416/492-0222
c/o 416/445-4524
c/o 416/445-4524
416/727-8795
416/639-0329
416/251-1511
416/481-0678
c/o416/445-4524
416/445-4524
416/445-4524
416/445-4524
416/445-4524
416/445-4524
416/445-4524
416/445-4524
c/o 416/445-4524
416/481-0678
416/742-3790
416/677-8840
c/o 416/445-4524
c/o 416/445-4524
c/o 416/445-4524
416/225-8760
c/o 416/445-4524
416/251-1511
519/442-7000
c/o 416/445-4524
416/639-0329
Librarians
COMAL
PET
SuperPET
VIC 20
Commodore 64
B-128
Amiga
C-128
MS/DOS
Victor Gough 416/677-8840
Mike Donegan 416/639-0329
Bill Dutfield 416/224-0642
Richard Best c/o 416/445-4524
Derick Campbell 416/492-9518
Paul Aitchison c/o 416/445-4524
Mike Donegan 416/639-0329
Adam Herst (CP/M) c/o 416/445-4524
James Kokkinen (C-128) c/o 416/445-4524
Colin Justason c/o 416/445-4524
TPUG Bulletin Board
Sysop (voice, weekdays) Sylvia Gallus
Assistant Sysop Steve Punter
c/o 416/896-1446
c/o 416/896-1446
A Monthly Publication
For
Commodore™ Owners
Commodore support with a twist . . . Personable and even humorous . . . Timely news . . . Helpful tutorials . . . On-going sup-
port for several languages: BASIC (including BASIC 7.0 as featured in the 128 PC), Machine Language, COMAL, and Pascal
. . . Program Listings . . . Hones! software reviews.
The Guide features some of the best computer humorists to be found.
• Introduce your "widow" to the Computer Widow's Compendium.
• Tutorials and feature articles by the famous Mindy Skelton.
• Featuring Shelly Roberts' "I'm Sorry ... But I Don't Speak Hexidecimal." Discover why Shelly just
may be the Andy Rooney of the computer world!
We feel we have assembled one of the most talented staff of writers in the Commodore world. Receive each month the most
friendly and helpful Commodore publication available. Written by Commodore users who are writing to you, not down at you.
Limited offer - FREE With Each Subscription !
Subscribe NOW to capitalize on free software offer!
Receive up to $99.85 in high quality software!
With each year's subscription (or renewal) ordered, receive your choice of the software packages listed below, including the
award winning educational games from Disney, or Omiterm Terminal written by our own Bob Richardson.
Subscription
Rate
Canadian ■
Receive FREE
One Year
Two Years
Three Years
•18.00
s 35.00
s 24.00 (U.S.)
s 47.00 (U.S.)
'48.00 s 64.00 (U.S.)
* Note: Canadian (and other foreign) subscribers must add $2 (U.S.) per program title to cover shipping and handling. No handling charge for
U.S. subscribers. Canadian rates listed in U.S. dollars — send U.S. funds only, please.
Any software title listed below
Any two of the titles below
All three of the titles below
Donald Duck's Playground
CES Software Showcase A ward Win-
ner! — Disney animation at its best!
Children play four games to "earn"
money to buy playground equip-
ment. Builds money handling skills.
Superb graphics. A bestseller! S39.95
retail value.
''~Dfi£. (fluids
3808 S.E. Licyntra Ct.
Portland, OR 97222
Winnie The Pooh
In The Hundred Acre Wood
— Players explore the Hundred Acre
Wood to find lost articles like Ow'ls
books, Pooh's honey pot and
Eeyore's tail, and return them to
their rightful owners. Cheery music
from the Disney movie caps off this
computer rendition of the beloved
classic. S39.95 retail value.
Omiterm Terminal Program
— Written by 'DL ^/uiJi ', own Bob
Richardson. Fully supports the new
1660 Modem 300! (The ONL Y com-
mercial terminal package that cur-
rently fully supports the 1660!!!
■Modem controls accessible from the keyboard
•Punter protocol — upload & download —
300/1200 baud
•Ten programmable function ke)s
•15 number phone directory
•20k receive buffer
•Tone or pulse dialing
•Auto dial/re-dial
•Halr/rull duplex
A S19.95 retail value.
Don't delay — mail today! Supplies are limited.
Name_
Address
You are entitled to one FREE software package, as
described above, for each year's subscription purchas-
ed. Please list your second choice, as supplies are limited
on the Disney titles! Please allow six to eight weeks for
delivery.
City, State & Zip.
My first choice is:_
Enter My Subscription for:
□ 1 Year O 2 Years [J 3 Years
My second choice is:
Please Check One: □ New □ Renewal
Software designed for AMIGA.
Lattice C Compiler
$149.95 Lattice Unicalc* Spreadsheet
$79.95
Willi more than 30.000 users worldwide. Lattice C Compilers
set the industry standard for MS-DOS software development.
Lattice C gives you all you need for development of programs
on die AMIGA. Lattice C is a full implementation of Kernighan
and Ritchie with ihe ANSI C extensions and many additional
features.
AMIGA C Cross Compiler $250.00
Allows AMIGA development on your MS-DOS system. Price
includes the above product.
Lattice Screen Editor (LSE")
$100.00
Designed as a programmer's editor, Lattice Screen Editor (LSE)
is fast, flexible and easy to learn. LSE's multi-window environ-
ment provides all the editor functions you need including block
moves, pattern searches and "cut and paste," In addition, /„V£
offers special features for programmers such as an error track-
ing mode and three Assembly Language inpu: modes. You can
also create macros or customize keystrokes, menus, and prompts
to your style and preferences.
Lattice dBC III Library" 1 $150.00
The dBC I II library lets you create, access and update files that
are compatible with Asinon-Tate s dBASE system. dliC Ill's C
functions let you extend existing dBASE applications or allow
vour users to process their data using dBC III or dBASE III.
Lattice Make Utility (LMK')
$125.00
An automated product generation utility compatible with UNIX
Make, Lattice Make Utility (LMK) lets you rebuild ci implex pro-
grams with a single command. Once you specify the relation-
ships of the various pieces of your system in a dependency file,
LMK automatically rebuilds your system the same way every
time, and only compiles program files that have changed. But
LMK is not limited to updating programs. Von can use LMK to
update documentation or perform any executable command!
Lattice Text Utilities ™ $75 00
Lattice Text Utilities ( ITU) consists of eight software tools to help
you manage your text files. GKEP searches files for the speci-
fied pattern. DIEE compares two files and lists their differ-
ences. EXTRACT creates a list of file names to lie extracted from
the current directory. BUILD creates batch files from a previ-
ously generated file name list. WC displays the number of
characters and optionally the checksum of a specified file. ED
is a line editor which can utilize output from other LTV soft-
ware in an automated batch mode. SPLAT searches files for a
specified character string and replaces every occurrence with
a specified string. And i-'ILES lists, copies, erases or removes files
or entire directory structures which meet the specified
conditions,
Unicalc is a simple-to-operate program that turns your AMIGA
computer into an electronic spreadsheet. Using Unicalc you can
easily create sales reports, expense accounts, balance sheets,
or any other reports you had to do manually.
; nica/c offers the versatility you've come to expect from busi-
ness software, plus the speed and processing power of
the AMIGA.
• 8192 row by 256 column processing area • Comprehensive
context-sensitive help screens • Cells can contain numeric,
algebraic formulas and titles • Foreign language customization
for all prompts and messages • Complete library of algebraic
and conditional functions • Dtial window capabilities • Float-
ing point and scientific notation available • Complete load, save
and prim capabilities • Unique customization capability for your
everv application • full compatibility with other leading
spreadsheets.
Lattice MacLibrary™ $100.00
The Lattice MacLibrary'" is a collection of more than sixty C
functions which allow you to quickly and efficiently lake
advantage of the powerful capabilities of the AMIGA.
Even it vmii knowledge oi the \MIGA is limited. Mat Library
can ease your job of implementing screens, windows and
gadgets hv utilizing the functions, examples and sample pro-
grams included with the package.
Other MacLibrary routines are functionally compatible with the
most widely used Apple 1 Macintosh'" Quickdraw Routines",
Standard File Package and Toolbox Utility Routines enabling
you to rapidly convert vour Macintosh programs to run on
the AMIGA,
Panel"'
$195 00
I'anei will help you write your screen programs and layer your
screen designs with up to ten overlapping images. Panel's screen
layouts can be assigned to individual windows and may be
dynamically loaded from files < >r compiled into a program. I'anei
will output C source for including in your applications. A mon-
itor and keyboard utility is also included to allow you to cus-
tomize your applications for other systems.
Willi I, juice products you get Lattice Service including (deplume sup-
pnri. notice of new products and enhancements and a 30-day mtincy-
hack guarantee. Corporate license agreements available
Lattice
Lattice. Incorporated
Post offiee nox yri
Glen Ellyn. Illinois 60138
(312)858-7950 TWX 910-291-2190
INTERNATIONAL SALES OFFICES:
Benelux: lnes Dataeom (32) 2T205161 England: Koundhill. (06"J)S-i6
Japan: Lifeboat Inc. (03)293-4711 France: SIT. ( 1 1 46-66-1 I -si
Germany: (49) 7841/4500